【问题标题】:EF Core Migrations with Multiple DB Schemas具有多个数据库架构的 EF Core 迁移
【发布时间】:2017-09-13 19:40:04
【问题描述】:

EF Core 1.1 和 SQL Server 2016

我们正在运行一个微服务应用程序,其中一些微服务具有独立的几个表。为单个微服务提供多个表的解决方案之一是为这些服务提供一个唯一的模式(例如,不是 DBO)并将它们全部放在一个数据库中(有利于成本和维护)。

这在 EF 6 中运行良好,但是,查看 core 中生成的 dbo.__EFMigrationsHistory,看起来 core 没有考虑架构。

我知道 EF Core 中的迁移已更改为查看代码而不是数据库,但我的问题是 dbo.__EFMigrationsHistory 表中记录的版本与架构无关.

您知道在将迁移写入数据库时​​如何让 EF Core 架构感知吗?

注意builder.HasDefaultSchema(Constants.SCHEMA); 已在 DBContext 中设置。

【问题讨论】:

标签: c# sql-server entity-framework entity-framework-core entity-framework-migrations


【解决方案1】:

builder.HasDefaultSchema() 用于设置模型的架构。 MigrationHistory 表的配置略有不同。你可以阅读更多关于它here

来自链接,

最简单的场景是当您只想更改表名或架构时。这可以使用 OnConfiguring(或 ASP.NET Core 上的 ConfigureServices)中的 MigrationsHistoryTable 方法来完成。这是一个例子。

protected override void OnConfiguring(DbContextOptionsBuilder options)
    => options.UseSqlServer(
        connectionString,
        x => x.MigrationsHistoryTable("__MyMigrationsHistory", "mySchema"));

【讨论】:

  • 谢谢,很好的回答!备注一:如果不需要,可以去掉connectionString参数。就我而言,这不是必需的。我只是将__EFMigrationsHistory 移动到它自己的模式“ef”中,所以protected override void OnConfiguring(DbContextOptionsBuilder options) => options.UseSqlServer(x => x.MigrationsHistoryTable("__EFMigrationsHistory", "ef")); 做得很好。
猜你喜欢
  • 2019-08-03
  • 1970-01-01
  • 1970-01-01
  • 2018-06-19
  • 1970-01-01
  • 1970-01-01
  • 2021-01-16
  • 2022-09-29
  • 1970-01-01
相关资源
最近更新 更多