实体框架代码优先迁移
Posted
技术标签:
【中文标题】实体框架代码优先迁移【英文标题】:Entity Framework Code First Migrations 【发布时间】:2013-12-29 02:24:35 【问题描述】:在运行以下命令时
pm> Update-Database
出现以下错误
System.Reflection.TargetInvocationException:调用的目标已抛出异常。 ---> System.TypeInitializationException:类型初始化程序 'System.Data.Entity.SqlServer.SqlProviderServices' 引发异常。 ---> System.TypeLoadException:“System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy”类型中的方法“ExecuteAsync”来自 程序集 'EntityFramework.SqlServer,版本 = 6.0.0.0,文化 = 中性, PublicKeyToken=b77a5c561934e089' 没有实现。
【问题讨论】:
这可能会有所帮助,***.com/questions/17572705/… 您的解决方案中的所有项目是否都引用相同的实体框架版本?您是否进行了干净且完整的重建?是什么导致了这个错误,它之前是否有效,您是否进行了任何更改? 【参考方案1】:您的 EF 版本和项目版本不相等。 您的实体框架是 .Net 4 的第 6 版,但您的项目使用 .net 4.5 .net 4.5 版本的项目必须使用 EF for .Net4.5
【讨论】:
我在 app.config 中没有发现任何问题,但这是解决方案: - 卸载实体框架 - 重新安装实体框架 其实就算你像我现在用的6.1.3这样的新版本ef,还是会在错误信息中说6.0.0.0版本。【参考方案2】:我遇到了同样的问题(EF 6.1.3 和 net462),我尝试了所有答案,但没有解决问题。当我最终切换到 Release 配置时,它发挥了作用。
不确定 Debug 出了什么问题,因为它们几乎相同,除了调试跟踪等。
希望这对未来的其他人有所帮助。
【讨论】:
【参考方案3】:不是理想的解决方案,但我切换回Entity Framework 5.0.0,问题就消失了。发现这个有用的link。
【讨论】:
【参考方案4】:您好,我遇到了类似的问题。很长一段时间后,我发现一个项目引用了实体框架版本 6.1.1,而另一个项目版本 6.1.3 在同一个解决方案中被引用。我从包管理器控制台中删除了 6.1.3。问题终于解决了。
希望这会对某人有所帮助
【讨论】:
【参考方案5】:我遇到了同样的问题。在花了几个小时来解决这个问题后。解决问题的是:我关闭了项目,创建了一个同名的新项目,将我创建的文件夹和类复制到新项目中,并通过 nuget 下载了我需要的包。然后添加迁移......之后一切顺利。
【讨论】:
以上是关于实体框架代码优先迁移的主要内容,如果未能解决你的问题,请参考以下文章