12

这是我在收到此错误之前所做的:

  1. 安装了 EF(预发布版本,可能是 6,我不知道)
  2. 决定我不想要,所以卸载它并重新安装稳定版本 (5)
  3. 通过 SSMS 截断我的数据库

这是错误:

Exception calling "CreateInstanceFrom" with "8" argument(s): "Could not load file or      
assembly 'EntityFramework, Version=5.0.0.0, Culture=neutral, PublicK
eyToken=b77a5c561934e089' or one of its dependencies. The located assembly's manifest   
definition does not match the assembly reference. (Exception from H
RESULT: 0x80131040)"
At C:\Projects\BCATracker.Web\packages\EntityFramework.6.0.0- 
alpha2\tools\EntityFramework.psm1:425 char:31
+     $domain.CreateInstanceFrom <<<< (
+ CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : DotNetMethodTargetInvocation

这是我尝试过的:

  • 从 bin 目录中删除所有内容,重新构建。
  • 从nuget中删除EF,删除包目录中的文件,在nuget中读取ef。

查看 proj 文件,我看到了这个:

<Reference Include="EntityFramework, Version=4.4.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
  <SpecificVersion>False</SpecificVersion>
  <HintPath>..\packages\EntityFramework.5.0.0\lib\net40\EntityFramework.dll</HintPath>
</Reference>

可能的根本原因是什么?

4

9 回答 9

17

我解决了这个问题。EntityFramework.dll 需要在 GAC 中,Visual Studio 才能从包管理器中使用它。

  1. 启动 Visual Studio 命令提示符(确保以管理员身份启动 Visual Studio)
  2. 转到您的包目录并找到 EntityFramework 包目录。
  3. 转到 lib\net45(如果目标为 4.5)
  4. 类型:gacutil /i EntityFramework.dll

注意:此时完全重新启动计算机可能是明智之举。

我不确定为什么 Visual Studio 不再看到 DLL,但这让我解决了这个问题。

于 2015-01-30T22:06:24.263 回答
1

我相信我能找到解决办法。我的解决方案中有几个项目。

在此处输入图像描述

我的数据库逻辑在 SqlDataAccess 中。该程序集在 WebUI 中被引用。

我从 DomainLogic 开始。在那里为存储库基类定义 POCO。

然后我添加了 SqlDataAccess 项目。

并尝试Enable-Migrations, Add-MigrationUpdate-Database指挥。它运行良好。在我将 WebUI(一个基于 MVC 4 的 Web 应用程序添加到项目并运行上面的命令后。我开始收到此版本错误。

我卸载项目WebUI并重新运行命令。它再次运行良好。因此,即使它不是最佳解决方案,您也可能希望卸载其他项目,将数据库项目留在解决方案中,然后运行这些命令。它对我有用。一切顺利!

于 2014-04-04T05:10:38.903 回答
1

是的,上面的评论对我有用。

EntityFramework.dll 需要在 GAC 中,Visual Studio 才能从包管理器中使用它。

1. Start Visual Studio Command Prompt (ensure you started Visual Studio as Administrator) 
2. Go to your packages directory and find the    EntityFramework package directory. 
3. Go to lib\net45 (if targeting 4.5)    
4. type: gacutil /i EntityFramework.dll 

注意:此时完全重新启动计算机可能是明智之举。

C:\Windows\system32>cd..

C:\Windows>cd..

C:\>cd \packages\EntityFramework.5.0.0\lib\net45

C:..\packages\EntityFramework.5.0.0\lib\net45>
gacutil /i EntityFramework.dll

这将绝对有效。

于 2016-08-19T17:38:36.040 回答
1

I also faced this problem while using using code first migration. just update the entity framework version to Entity Framework Version 6.1.3 to resolve this. using command on Package manager console "Install-Package Entity Framework -version 6.1.3"

于 2015-07-31T06:39:02.433 回答
1
  1. 打开 Manage NUGET Packages for solution... 窗口并更新 EntityFramework
  2. 重新启动 Visual Studio
  3. 在包管理器控制台中运行命令 Enable-Migrations -ContextTypeName Movie.Models.MovieDBContext(这是一个示例上下文)
于 2015-12-01T10:17:43.310 回答
1

安装 EF 6.1.3,这将解决问题。

于 2015-12-07T09:02:23.923 回答
0

执行以下操作来解决此问题:

1)从包中卸载实体框架(管理 NUGET 包)。

2)重新启动Visual Studio。

3)从包管理器再次重新安装实体框架。

4) 添加对 System.Data.Entity 的引用。

5)在包管理器控制台中运行命令 Enable-Migrations -ContextTypeName Movie.Models.MovieDBContext(这是一个示例上下文)。

在此之后,您可以看到在 packages.config 中反映的更改。

于 2014-12-17T16:15:34.113 回答
0

我有 Windows 10。以下步骤更正了该问题

  1. 打开程序和功能并搜索“实体”
  2. 我注意到在 2015 年 7 月 22 日更新 6.1.3 之后,于 2016 年 1 月 23 日安装了更新
  3. 选择了'Entity Framework 6.1.3'等。更新
  4. 单击“修复”按钮。修复完成后,我重新启动了 Visual Studio,问题不再出现。

感谢@Farshid 提供解决方案的初步线索。

在此处输入图像描述

于 2016-01-31T21:39:21.517 回答
-1

我也面临同样的错误并且在这个错误上浪费了很多时间**这只是因为我更新了实体框架但它给出了这个错误所以我再次安装实体框架 6.0.0 **错误解决了

在此处输入图像描述

于 2018-01-18T16:41:15.500 回答