实体框架代码首次迁移抛出错误

led*_*per 11 entity-framework database-migration ef-code-first c#-4.0

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

  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
Run Code Online (Sandbox Code Playgroud)

这是我尝试过的:

  • 从bin目录中删除everthing,重建.
  • 从nuget中删除EF,删除packages目录中的文件,在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>
Run Code Online (Sandbox Code Playgroud)

可能的根本原因是什么?

all*_*en1 16

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

  1. 启动Visual Studio命令提示符(确保以管理员身份启动Visual Studio)
  2. 转到package目录并找到EntityFramework包目录.
  3. 转到lib \net45(如果定位4.5)
  4. 键入:gacutil/i EntityFramework.dll

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

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

  • 上述说明需要进行一些修正.1)您需要启动Visual Studio工具命令提示符(通常从Visual Studio安装人员下的"开始"菜单)而不是常规命令提示符.5)您无需重新启动Visual Studio即可识别更改.希望能帮助到你... (2认同)

Zia*_*han 1

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

在此输入图像描述

我的数据库逻辑位于 SqlDataAccess 中。WebUI 中引用了该程序集。

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

然后我添加了SqlDataAccess项目。

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

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