EF6.1.1的code first开发,出现异常: System.Data.Entity.SqlServer.SqlProviderServices, 悬赏50分
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了EF6.1.1的code first开发,出现异常: System.Data.Entity.SqlServer.SqlProviderServices, 悬赏50分相关的知识,希望对你有一定的参考价值。
使用EF6.1.1的code first开发时经常报异常:未能从程序集“EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089”中加载类型“System.Data.Entity.Infrastructure.TableExistenceChecker”
开发环境: vs2013update4, mssql2008R2
具体情况:在用EF6.1.1的Code First 开发时,经常报错:
Message=“System.Data.Entity.SqlServer.SqlProviderServices”的类型初始值设定项引发异常。
Source=EntityFramework.SqlServer
TypeName=System.Data.Entity.SqlServer.SqlProviderServices
StackTrace:
在 System.Data.Entity.SqlServer.SqlProviderServices.get_Instance()
InnerException: System.TypeLoadException
HResult=-2146233054
Message=未能从程序集“EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089”中加载类型“System.Data.Entity.Infrastructure.TableExistenceChecker”。
Source=EntityFramework.SqlServer
TypeName=System.Data.Entity.Infrastructure.TableExistenceChecker
StackTrace:
在 System.Data.Entity.SqlServer.SqlProviderServices..ctor()
在 System.Data.Entity.SqlServer.SqlProviderServices..cctor()
在没有更改数据库结构和类的情况下, 只是更新数据库中的数据, 也会出现正异常.
通过SVN提交代码后, 在另一个电脑上Update代码, 没做任何更改直接调试也会出现这个错误
通过 程序包管理器控制台 执行Update-Database迁移更新后就没有异常了
但是update-database后别的在电脑上调试就会出现这个异常, 直接update-database异常也会消失.
请教各位大神, 为什么会出现这样的问题, 需要怎么解决, 这个太影响开发了, 急等着用呢.
有
2、如果是VS的问题,建议重做系统和环境。本回答被提问者采纳 参考技术B 当前运行的项目到nuget里安装ef 参考技术C 1、查询SQL中的所有表: Select TABLE_NAME FROM 数据库名称.INFORMATION_SCHEMA.TABLES Where TABLE_TYPE='BASE TABLE' 执行之后,就可以看到数据库中所有属于自己建的表的名称 2、查询SQL中所有表及列: Select dbo.sysobjects.name as Table_name, dbo.syscolumns.name AS Column_name FROM dbo.syscolumns INNER JOIN dbo.sysobjects ON dbo.syscolumns.id = dbo.sysobjects.id Where (dbo.sysobjects.xtype = 'u') AND (NOT (dbo.sysobjects.name LIKE 'dtproperties')) 3、在Sql查询分析器,还有一个简单的查询方法: EXEC sp_MSforeachtable @command1="sp_spaceused '?'" 执行完之后,就可以看到数据库中所有用户表的信息 4、查询总存储过程数:select count(*) 总存储过程数 from sysobjects where xtype='p' 附:xtype类型D = 默认值或 DEFAULT 约束
F = FOREIGN KEY 约束L = 日志FN = 标量函数
IF = 内嵌表函数
P = 存储过程
PK = PRIMARY KEY 约束(类型是 K)
RF = 复制筛选存储过程S = 系统表TF = 表函数
TR = 触发器U = 用户表UQ = UNIQUE 约束(类型是 K)V = 视图X = 扩展存储过程 另:在sqlserver中取得某个数据库中所有表名的sql语句 select sysobjects.name from sysobjects.xtype ='U';SELECT name
WHERE (xtype = 'U') 在数据库的sysobjects表里有这个数据库全部表的信息, xtype值为'U'的就是表名 注意:一般通过上述方法获得全部用户表示都会有一个dtproperties表,SQLSERVER 默认它也是用户表,想要从用户表中排出,需要加上限定条件 status>0,即:select * from sysobjects where xtype='U' and status>0追问
答非所问, 你根本就不知道我的描述的是什么问题, 答的不知道所云. 还是复制过来的内容, 极度鄙视这样骗分的
EF 4.1 Code First 出现无效的列名错误
【中文标题】EF 4.1 Code First 出现无效的列名错误【英文标题】:Invalid column name error with EF 4.1 Code First 【发布时间】:2013-05-22 22:32:41 【问题描述】:我已经遇到这个问题大约一天了,我已经搜索并发现他们的解决方案存在类似问题,但无法解决这个问题。
我已经在 Teams 示例中看到了这一点,所以我也会这样做。我有一个Team
:
public abstract class Team
[Key]
public int IdTeam get; set;
public string Name get; set;
public string Description get; set;
我还有一个Match
对象:
public class Match
[Key]
public int IdMatch get; set;
[ForeignKey("HomeTeam")]
public int IdHomeTeam get; set;
[ForeignKey("AwayTeam")]
public int IdAwayTeam get; set;
public virtual Team HomeTeam get; set;
public virtual Team AwayTeam get; set;
每当我尝试访问任一团队的名称时,都会收到 Invalid column name Team_TeamId
错误。我猜这与 EF 和未正确映射外键有关。我还看到其他人使用 ICollections,但我认为在这种情况下我不需要它们。
【问题讨论】:
我已经编辑了我的答案,看看这是否有效 【参考方案1】:您必须在 OnModelCreating
方法中解决此问题。实体框架似乎无法识别外键,所以必须具体指定。
public class Entities : DbContext
...
protected override void OnModelCreating(DbModelBuilder modelBuilder)
modelBuilder.Entity<Match>()
.HasRequired(b => b.AwayTeam)
.WithMany()
.HasForeignKey(b => b.IdAwayTeam);
modelBuilder.Entity<Match>()
.HasRequired(b => b.HomeTeam)
.WithMany()
.HasForeignKey(b => b.IdHomeTeam);
有关代码优先的更多信息OnModelCreating
,请查看:http://msdn.microsoft.com/en-us/library/system.data.entity.dbcontext.onmodelcreating(v=vs.103).aspx
【讨论】:
为什么团队抽象顺便说一句?团队是否有匹配集合? 不,它没有集合。没有收藏,没有摘要? 这应该可以,试试吧。实体框架不能处理这个标准,我们明确告诉它。 这实际上应该是您的问题的解决方案,您可以尝试将外键更改回来。如果您(临时)删除其中一个外键,也会发生这种情况吗?以上是关于EF6.1.1的code first开发,出现异常: System.Data.Entity.SqlServer.SqlProviderServices, 悬赏50分的主要内容,如果未能解决你的问题,请参考以下文章
获取安全异常 SQLCE 4、Code First CTP 5 和共享主机
解决Code First MySql数据库 Specified key was too long; max key length is 767 bytes异常
EF中三大开发模式之DB First,Model First,Code First以及在Production Environment中的抉择