实体框架代码优先迁移 - 启用 - 迁移失败(Entity Framework Code First

2019-07-03 11:16发布

我一直在尝试使用代码优先迁移,并有一些有限的成功,但我错了的事情之一是,我没有告诉它该项目有配置信息。 这产生了一些课给我,我排序的全身心投入工作,但我想,我应该理清配置问题并重新开始。

严重的错误。 现在,我已经尝试删除所有迁移的东西,我觉得我不能再重新安装。 我已经卸载了,重新安装EF 5,但是当我使用Enable-Migrations命令,我得到一个异常报告:

System.Runtime.Serialization.SerializationException:类型未解决的成员 'System.Data.Entity.Migrations.Design.ToolingFacade + GetContextTypeRunner,的EntityFramework,版本= 4.4.0.0,文化=中性公钥= b77a5c561934e089'。

不管是什么我现在做的,我似乎无法让过去那个。 有任何想法吗?

Answer 1:

这发生在我身上,因为我已经在我的项目的路径中的特殊字符-具体而言,符号&。 我删除了符号,然后一切工作就像一个魅力。



Answer 2:

好了,我不知道为什么,这是不是从一开始就存在问题,但事实证明,这个问题是由有一些项目靶向.NET 4.5和我的一些靶向.NET 4.0造成的。 这意味着,这些项目使用不同版本EF 5(V5与V4.4),我认为这是造成问题的原因; 它试图加载DLL的版本错误。

当我从卸我的解决方案靶向.NET 4.5的项目,我可以用在靶向.NET 4项目启用的迁移。



Answer 3:

我发现可能会出现这个问题,所以我想在这里分享它:-)备查另一种方式。

在我们的例子中,我们得到了我们的一个无效的绑定重定向Web.config文件:

<dependentAssembly>
   <assemblyIdentity name="EntityFramework" publicKeyToken="b77a5c561934e089" culture="neutral" />
   <bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.2.0.0" />
   <codeBase version="6.0.0.0" href="libs/EntityFramework.dll" />
</dependentAssembly>

尽管NuGet包的版本是6.2的程序集版本仍然是6.0.0.0。 使用这种重定向可能不会与您的代码引起的问题,但将打破PowerShell的命令EF以及在migrate.exe工具。

解决的办法是要么删除绑定或使用正确的版本- 6.0.0.0。

<dependentAssembly>
   <assemblyIdentity name="EntityFramework" publicKeyToken="b77a5c561934e089" culture="neutral" />
   <bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
   <codeBase version="6.0.0.0" href="libs/EntityFramework.dll" />
</dependentAssembly>


Answer 4:

写这个原因,也许有一天它会帮助别人 - 只要有同样的问题和(愚蠢的)问题是在恶劣的connectionString主机名。



Answer 5:

我的项目是接收命名约定的这个错误。 MyProject.MyProject.Web,MyProject.MyProject.EntityFramework等。

我把它改成MyProject.MyProject2.Web等。



Answer 6:

我的项目文件夹路径有一句话Q&A。 只要我改QA并重新运行迁移,这个问题已经消失。 避免在项目路径中的任何文件夹的名称“&”字符。



Answer 7:

我有同样的问题,这可能是造成通过更改名称项目和/或在我的项目文件夹结构中移动它。 它,总之,通过重建项目和导入(添加现有项)我所有的.cs手动文件,然后添加新的迁移解决。



文章来源: Entity Framework Code First Migrations - Enable-Migrations fails