实体框架核心中的添加迁移错误

时间:2018-03-27 10:22:55

标签: c# entity-framework-core

我正在关注Julie Lerman的Entity Framework Core 2.0入门教程。我已经安装了Microsoft.EntityFrameworkCore.SqlServer版本2.0.2。当我尝试在VS 2017中运行add-migration initial(程序包管理器控制台)时,我收到以下错误:

System.IO.FileLoadException: Could not load file or assembly 'Microsoft.EntityFrameworkCore.SqlServer, Version=2.0.2.0, Culture=neutral, PublicKeyToken=adb9793829ddae60'. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040) File name: 'Microsoft.EntityFrameworkCore.SqlServer, Version=2.0.2.0, Culture=neutral, PublicKeyToken=adb9793829ddae60' 当我运行dotnet --version i get 2.1.3.任何人都可以帮我纠正这个错误。

屏幕截图:

enter image description here

先谢谢。

2 个答案:

答案 0 :(得分:1)

遵循相同的Pluralsight视频,我遇到了同样的问题。跑完后:

PM> install-package Microsoft.EntityFrameworkCore.SqlServer

默认项目设置为SomeUI

在这样做之后,我能够毫无问题地运行add-migration initial

答案 1 :(得分:0)

我知道以下不是我自己问题的确切答案。但是,而不是等待有人回答如何在VS 2017中解决它(Windows)我在我的Mac上使用终端方法并使用dotnet cli重新创建解决方案(Julie Lerman希望你赢了并且不会发送你最喜欢的Samurai战斗:P)

注意:以下步骤适用于Mac。安装了SQl Server的Windows用户可以跳过步骤1.

步骤1:安装Docker并拉取MSSQL映像

一个。使用以下命令安装docker并为linux下载最新的mssql映像:

sudo docker pull microsoft/mssql-server-linux

湾使用以下命令启动docker镜像:

sudo docker run -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD= 
    <ComplexPassword>' -p 1433:1433 -d microsoft/mssql-server-linux

℃。可选的。使用npm install -g sql-cli安装sql-cli。现在,您可以使用mssql -s 127.0.0.1 -u sa -p.

连接到在Docker上运行的Sql Server

第2步:创建.sln,.csproj并使用dotnet cli添加引用

  1. 为Project创建目录,在其下使用:dotnet new sln -n SamuraiApp
  2. 创建.sln文件
  3. 使用以下内容创建数据和域类库项目:dotnet new classlib -n SamuraiApp.Datadotnet new classlib -n SamuraiApp.Domain

  4. 使用dotnet new web -n SamuraiApp.UI

  5. 创建和清空ASP.NET核心项目
  6. 使用以下内容将实体Frmaework Core添加到Data ClassLibrary:cd SamuraiApp.Datadotnet add package Microsoft.EntityFrameworkCore.SqlServer

  7. 使用:cd SamuraiApp.UI/dotnet add package Microsoft.EntityFrameworkCore.Design

  8. 向UI项目添加实体框架核心设计
  9. 运行dotnet restore

  10. 第3步:添加引用

    1. 执行dotnet add SamuraiApp.Data reference SamuraiApp.Domain/SamuraiApp.Domain.csproj以添加域作为对数据的引用。
    2. 执行dotnet add SamuraiApp.UI reference SamuraiApp.Domain/SamuraiApp.Domain.csproj以添加域作为对UI的引用。
    3. 执行dotnet add SamuraiApp.UI reference SamuraiApp.Data/SamuraiApp.Data.csproj以添加数据作为对UI的引用。
    4. 执行以下命令将所有三个项目添加到解决方案中:

      dotnet sln添加SamuraiApp.Data/SamuraiApp.Data.csproj     dotnet sln添加SamuraiApp.Domain / SamuraiApp.Domain.csproj     dotnet sln添加SamuraiApp.UI / SamuraiApp.UI.csproj

    5. 在您喜欢的文本编辑器中打开SamuraiApp.Data.csproj并添加以下内容:

    6. &#13;
      &#13;
        <ItemGroup>
          <DotNetCliToolReference 
            Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.0" />
         </ItemGroup>
      &#13;
      &#13;
      &#13;

      启用dotnet ef。

      第4步:编写域类,DataContext类和添加迁移 cd进入SamuraiApp.Data文件夹并执行以下命令添加初始迁移:

      dotnet ef migrations add Initial --startup-project ../SamuraiApp.UI
      

      希望对某人有所帮助。但仍然在使用VS 2017的Windows中我遇到了问题,希望有人能帮我解决。

      谢谢:)