gpt4 book ai didi

entity-framework-core - 具有多个 DBContext 的 EF 7 迁移

转载 作者:行者123 更新时间:2023-12-04 02:26:34 26 4
gpt4 key购买 nike

我在搭建和从具有多个 DBContext 的类库进行迁移时遇到问题。我找到了一个类似于迁移的命令行参数:

dnx ef migration add -c Contexts.IndustryContext initial

但这甚至无法通过命令行解析器获得。我希望我所有的 DBContexts 和数据库内容都来自主 MVC 6 web 项目和它们自己的 DLL。这可能吗?需要什么命令行魔法?

最佳答案

我一直在寻找这个问题的答案,并希望为 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>

注意:该版本是本文发布时的最新版本,将来可能会发生变化。

接下来,我创建了一个名为 Migrations.Console 的新控制台应用程序 (.NET Core) 并将其添加到我的解决方案中。您必须在此项目中引用所有 DbContext 类库。

我安装了 Microsoft.EntityFrameworkCoreMicrosoft.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);
}
}

注意:确保更新上下文和连接字符串以匹配您的项目。

现在每个 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 文件夹。

关于entity-framework-core - 具有多个 DBContext 的 EF 7 迁移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34034589/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com