ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

迁移时,EF Core工具错误

2019-10-25 01:08:10  阅读:197  来源: 互联网

标签:asp-net-core-2-1 asp-net-web-api2 c entity-framework


我正在尝试3个项目的解决方案:

> WebApi .net core 2.1-Test.Api
>类库.net核心2.1目标框架-Test.Data
>类库.net核心2.1目标框架-Test.Model

在Test.Data中,我创建了一个上下文类,DbInizializer类,存储库,…
在Test.Model中,我创建了实体

在Test.Api中,我要创建迁移并安装此软件包:

<Project Sdk="Microsoft.NET.Sdk.Web">

  <PropertyGroup>
    <TargetFramework>netcoreapp2.1</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <Folder Include="wwwroot\images\" />
  </ItemGroup>

  <ItemGroup>
    <PackageReference Include="AutoMapper" Version="7.0.1" />
    <PackageReference Include="AutoMapper.Data" Version="2.0.0" />
    <PackageReference Include="AutoMapper.Extensions.Microsoft.DependencyInjection" Version="5.0.1" />
    <PackageReference Include="FluentValidation" Version="8.0.100" />
    <PackageReference Include="Microsoft.AspNetCore.App" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="2.1.4">
      <PrivateAssets>all</PrivateAssets>
      <IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
    </PackageReference>

  </ItemGroup>

  <ItemGroup>
    <ProjectReference Include="..\Test.Data\Test.Data.csproj" />
    <ProjectReference Include="..\Test.Model\Test.Model.csproj" />
  </ItemGroup>

</Project>

在Startup.cs中添加此代码

services.AddDbContext<TestContext>(options =>                options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection"),
                b => b.MigrationsAssembly("Test.Api")));

我也创建此类“ DesignTimeDbContextFactory”

public class DesignTimeDbContextFactory : IDesignTimeDbContextFactory<TestContext>
{
    public TestContext CreateDbContext(string[] args)
    {
        IConfigurationRoot configuration = new ConfigurationBuilder()
            .SetBasePath(Directory.GetCurrentDirectory())
            .AddJsonFile("appsettings.json")
            .Build();

        var builder = new DbContextOptionsBuilder<TestContext>();

        var connectionString = configuration.GetConnectionString("DefaultConnection");
        //configuration["Data:Products:ConnectionString"];
            //

        builder.UseSqlServer(connectionString);

        return new TimeShareContext(builder.Options);
    }
}

当我运行这个

dotnet ef migrations add "InitialCreate" -o "Data\Migrations"

得到这个

EF Core工具版本“ 2.1.3-rtm-32065”比运行时版本“ 2.1.4-rtm-31024”更旧.更新工具以获取最新功能和错误修复.
您的目标项目“ Test.Api”与迁移程序集“ Test.Data”不匹配.更改目标项目或更改迁移程序集.

通过使用DbContextOptionsBuilder更改迁移程序集.例如. options.UseSqlServer(connection,b => b.MigrationsAssembly(“ Test.Api”)).默认情况下,迁移程序集是包含DbContext的程序集.
通过使用程序包管理器控制台的“默认项目”下拉列表,或从包含迁移项目的目录中执行“ dotnet ef”,将目标项目更改为迁移项目.

我已经完成了所有软件包的升级.

我不明白,因为这行不通.

BR

解决方法:

您必须引用EF工具,并在您的EF上下文所在的项目(即Test.Data)中创建迁移脚本.

关于抱怨版本不匹配,我有相同的错误消息,而this link导致我找到了解决方案.

运行以下命令:

Install-Package Microsoft.EntityFrameworkCore.Tools -Version 2.1.4

标签:asp-net-core-2-1,asp-net-web-api2,c,entity-framework
来源: https://codeday.me/bug/20191024/1924624.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有