在我的解决方案中,我想首先使用Asp.net核心+ EF代码
我有两个项目:
在CC.API中我有启动课,有:
services.AddDbContext<DataContext>(options => options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection"), b => b.MigrationsAssembly("CC.Infrastructure")));
(连接字符串在appsettings.json中)
正如您所看到的,我正在尝试将迁移文件保存在不同的项目中 - CC.Infrastructure。
不幸的是,Add-Migration Init
我收到错误:
您的目标项目“PK.API”与您的迁移程序集“PK.Infrastructure”不匹配。更改目标项目或更改迁移程序集
如果我在启动时更改b => b.MigrationsAssembly("CC.API")
,那么everthing工作正常,但文件迁移文件将在CC.API中:/
答案 0 :(得分:5)
这是EF Core的长期问题。解决方案使用使您的类库成为可执行文件(暂时),然后针对它运行所有EF操作。
使用当前工具,您可以在库文件夹中运行Add-Migration
;唯一需要注意的是,您需要将startup-project
标志设置为实际的可执行项目。
所以命令最终会像:
C:\CC.Infrastructure>dotnet ef migrations add NewMigration --startup-project ../CC.API/CC.API.csproj
答案 1 :(得分:0)
您必须将Microsoft.EntityFrameworkCore.Tools.DotNet
添加到CC.Infrastructure项目中。右键单击该项目,然后选择Edit *.csproj
。然后,添加以下内容:
<ItemGroup>
<DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.0-preview2-final" />
</ItemGroup>
您无法从Nuget包管理器添加此内容。它必须直接添加到项目中。
一旦你这样做了。您可以将启动项目设置为CC.API来运行该命令。转到类库的文件夹。右键单击项目和Open Folder in File Explorer
的最简单方法。然后,在cmd
的地址栏中键入File Explorer
,以在该文件夹中打开命令提示符。
现在使用以下命令创建迁移:
dotnet ef migrations add InitialCreate -c DataContext --startup-project ../CC.API/CC.API.csproj
答案 2 :(得分:0)