当我尝试在EF 4.3.1中启用迁移时引发异常

时间:2012-06-12 15:12:26

标签: entity-framework entity-framework-4 ef-migrations

我在我的.Net 4.0类库项目中使用nuget安装的Entity framework 4.3.1。在情况下,当我在PM控制台中调用“启用 - 迁移”命令时,我收到以下异常:

  

使用“1”参数调用“LoadFrom”的异常:“Nelzenačístsumbornebosestavenífile:/// D:\   用户\ DvoracekR \ Documents \ Visual Studio 2010 \ Projects \ WebCameras \ packages \ EntityFramework.4.3.1 \ to   ols \ EntityFramework.PowerShell.Utility.dll nebo jeden zjejichzávislýchprvků。 Systémnemůženalé   zttuvedenýsorbor。“   在D:\ Users \ DvoracekR \ Documents \ Visual Studio 2010 \ Projects \ WebCameras \ packages \ EntityFramework.5。   0.0-rc \ tools \ EntityFramework.psm1:393 char:62   + $ utilityAssembly = [System.Reflection.Assembly] :: LoadFrom<<<< ((Join-Path $ toolsPath Entity   Framework.PowerShell.Utility.dll))      + CategoryInfo:NotSpecified:(:) [],MethodInvocationException      + FullyQualifiedErrorId:DotNetMethodException

     

您无法在空值表达式上调用方法。   在D:\ Users \ DvoracekR \ Documents \ Visual Studio 2010 \ Projects \ WebCameras \ packages \ EntityFramework.5。   0.0-rc \ tools \ EntityFramework.psm1:394 char:50   + $ dispatcher = $ utilityAssembly.CreateInstance<<<< (      + CategoryInfo:InvalidOperation:(CreateInstance:String)[],RuntimeException      + FullyQualifiedErrorId:InvokeMethodOnNull

     

使用“8”参数调用“CreateInstanceFrom”的异常:“Typ System.Data.Entity.Migrations.En   ableMigrationsCommandzesestaveníEntityFramework.PowerShell,Version = 4.3.1.0,Culture = neutral,P   ublicKeyToken = b77a5c561934e089nelzenačíst。“   在D:\ Users \ DvoracekR \ Documents \ Visual Studio 2010 \ Projects \ WebCameras \ packages \ EntityFramework.5。   0.0-rc \ tools \ EntityFramework.psm1:418 char:31> + $ domain.CreateInstanceFrom<<<< (      + CategoryInfo:NotSpecified:(:) [],MethodInvocationException      + FullyQualifiedErrorId:DotNetMethodException

6 个答案:

答案 0 :(得分:25)

我解决了上述问题。

  1. 我使用NuGet包管理器卸载了Entity框架。
  2. 我手动清除了以包中的“Entity”开头的子目录 目录。
  3. 我再次安装了Entity Framework 4.3.1
  4. 现在正确启用了迁移。

答案 1 :(得分:2)

我知道这是一个老问题,已经有了一个公认的答案,但我有这个问题,并且认为我会分享我为解决它而做的事情。


我的解决方案是源代码控制,我弄乱了我的本地项目。 我决定从Source Control重新开始,所以我创建了一个新文件夹并检查了SVN的代码。

当我这样做时,我无法再创建迁移。我得到了上面列出的相同错误。我尝试了Uninstall-Package EntityFramework,但在EntityFramework中收到了关于丢失文件/引用的类似消息。

我回到旧文件夹并查看$Project\packages\EntityFramework.6.0.2\并将其与我的新文件夹进行比较。有几个DLL / Xml文件丢失,因为它们不在源代码管理中。它们位于\tools\\lib\net40\lib\net45\目录中。

我刚刚将这些文件复制到我的新项目,关闭/重新打开Visual Studio,并进行了重建。在那之后,一切都很好。

答案 2 :(得分:1)

重新安装NuGet包对我来说不起作用。将项目从网络驱动器移动到本地驱动器的工作是什么。运行比较表明,除objbin目录外,所有文件都是二进制相同的。

如果我没记错的话,我在Update-Database的最后一次尝试是在我将项目移动到网络驱动器之前。

答案 3 :(得分:0)

我通过向他发送项目与大学分享项目时遇到了这个问题。当他把它发回给我时,我发现当我尝试添加迁移时,返回的项目给了我这个错误。我通过使用原始项目中的文件夹覆盖返回项目中的packages \ EntityFramework.5.0.0文件夹来解决问题。

如果我只是在我自己的机器上移动项目,我就不会遇到问题。

答案 4 :(得分:0)

在同一台物理计算机上使用不同的VM时,这个问题开始发生在我身上。

VMWare Fusion默认与OS X共享配置文件目录,这在使用安装了Visual Studio的多个VM时会产生很多问题,实际上我安装的几乎所有应用程序都开始表现得很奇怪。那个时候应该响铃。

通过关闭文件夹共享来解决问题,由于我没有选择不共享配置文件夹,只添加/删除其他文件夹,因此不太明显。

希望我的愚蠢帮助其他人:)

答案 5 :(得分:0)

我在Visual Studio 2017上打开的Visual Studio 2015中的项目存在同样的问题。以下是我解决它的方法:

  1. 工具 - >手动删除实体框架 NuGet Package Manager - > 从解决方案管理NuGet包
  2. 搜索实体框架
  3. 不幸的是,有依赖关系。因此,强制仅删除实体框架根本无法解决问题。因此无论依赖关系如何,请从上述步骤中手动删除它。
  4. 最后再次安装您可能已删除的实体框架和任何依赖项。完成此操作后,我没有重新启动我的Visual Studio,在键入enable-migrations后,一切正常。
  5. 为了分享我的经验,我尝试了这一步:

      

    Uninstall-Package EntityFramework -Force

    然后为每个项目安装它:

      

    Install-Package EntityFramework

    但是对我不起作用。所以我猜我必须手动卸载它,包括它的依赖关系而不使用force并再次安装它才能工作。但很高兴它做到了。