我一直在尝试使用代码优先迁移,并有一些有限的成功,但我错了的事情之一是,我没有告诉它该项目有配置信息。 这产生了一些课给我,我排序的全身心投入工作,但我想,我应该理清配置问题并重新开始。
严重的错误。 现在,我已经尝试删除所有迁移的东西,我觉得我不能再重新安装。 我已经卸载了,重新安装EF 5,但是当我使用Enable-Migrations
命令,我得到一个异常报告:
System.Runtime.Serialization.SerializationException:类型未解决的成员 'System.Data.Entity.Migrations.Design.ToolingFacade + GetContextTypeRunner,的EntityFramework,版本= 4.4.0.0,文化=中性公钥= b77a5c561934e089'。
不管是什么我现在做的,我似乎无法让过去那个。 有任何想法吗?
这发生在我身上,因为我已经在我的项目的路径中的特殊字符-具体而言,符号&。 我删除了符号,然后一切工作就像一个魅力。
好了,我不知道为什么,这是不是从一开始就存在问题,但事实证明,这个问题是由有一些项目靶向.NET 4.5和我的一些靶向.NET 4.0造成的。 这意味着,这些项目使用不同版本EF 5(V5与V4.4),我认为这是造成问题的原因; 它试图加载DLL的版本错误。
当我从卸我的解决方案靶向.NET 4.5的项目,我可以用在靶向.NET 4项目启用的迁移。
我发现可能会出现这个问题,所以我想在这里分享它:-)备查另一种方式。
在我们的例子中,我们得到了我们的一个无效的绑定重定向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>
写这个原因,也许有一天它会帮助别人 - 只要有同样的问题和(愚蠢的)问题是在恶劣的connectionString主机名。
我的项目是接收命名约定的这个错误。 MyProject.MyProject.Web,MyProject.MyProject.EntityFramework等。
我把它改成MyProject.MyProject2.Web等。
我的项目文件夹路径有一句话Q&A。 只要我改QA并重新运行迁移,这个问题已经消失。 避免在项目路径中的任何文件夹的名称“&”字符。
我有同样的问题,这可能是造成通过更改名称项目和/或在我的项目文件夹结构中移动它。 它,总之,通过重建项目和导入(添加现有项)我所有的.cs手动文件,然后添加新的迁移解决。