Hot*_*key 3 entity-framework-core
我在脚手架和从具有多个DBContext的类库中进行迁移时遇到问题。我找到了一个用于迁移的命令行参数:
dnx ef migration add -c Contexts.IndustryContext initial
Run Code Online (Sandbox Code Playgroud)
但这甚至不能通过命令行解析器获得。我希望所有的DBContexts和数据库内容都出自MVC 6主Web项目并位于其自己的DLL中。这可能吗?需要什么命令行魔术?
我还没有尝试将数据层放入单独的项目中,但我确实在单个 Web API 项目中拥有多个 DbContext。它也应该适用于单独的项目。
使用最新语法 (v1.0.0),您可以像这样创建迁移:
dotnet ef migrations add <migration-name> -o <output-directory> -c <context>
Run Code Online (Sandbox Code Playgroud)
<context>DbContext 的完整类名在哪里——比如MyProject.Data.MyDbContext
我将不同上下文的迁移放入不同的目录中,但我认为您不必这样做。只要确保它们具有不同的migration-name值即可。
我一直在寻找这个问题的答案,并想为ef core 2.0提供我的解决方案。
Microsoft.EntityFrameworkCore.Tools.DotNet需要添加到其中每个都有的类库DbContext中。右键单击该项目,然后选择Edit *.csproj。然后,添加以下内容:
<ItemGroup>
<DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.0-preview2-final" />
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)
注意:该版本是本文发布时的最新版本,将来可能会更改。
接下来,我创建了一个名为Migrations.Console的新控制台应用程序(.NET Core),并将其添加到了我的解决方案中。您将必须DbContext在此项目中引用所有类库。
我安装Microsoft.EntityFrameworkCore和Microsoft.EntityFrameworkCore.Design的NuGet包。
在Migrations.Console应用程序中,我为我拥有的每个Db上下文创建了一个DbContextFactory类。
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Design;
public class ApplicationDbContextFactory : IDesignTimeDbContextFactory<ApplicationDbContext>
{
public ApplicationDbContext CreateDbContext(string[] args)
{
var builder = new DbContextOptionsBuilder<ApplicationDbContext>();
builder.UseSqlServer("Server=(local);Database=DATABASENAME;Trusted_Connection=True;MultipleActiveResultSets=true");
return new ApplicationDbContext(builder.Options);
}
}
Run Code Online (Sandbox Code Playgroud)
注意:确保更新上下文和连接字符串以匹配您的项目。
现在DbContextFactory已经创建了每个迁移,您可以开始创建迁移。转到您的课程库的文件夹。右键单击项目和的最简单方法Open Folder in File Explorer。然后,键入cmd的地址栏File Explorer以在该文件夹中打开命令提示符。
现在,使用以下命令创建迁移:
dotnet ef migrations add InitialCreate -c ApplicationDbContext --startup-project ../Migrations.Console/Migrations.Console.csproj
注意:进行更改ApplicationDbContext以匹配您正在使用的上下文的名称。另外,如果您使用其他名称调用控制台项目,则需要更改路径和名称。
现在,您应该Migrations在类库中看到一个文件夹。
| 归档时间: |
|
| 查看次数: |
3368 次 |
| 最近记录: |