sql-server - 如何为 EF 核心迁移历史记录表设置自定义名称并在生成迁移脚本时使用它?
问题描述
我有一个使用 EF Core 的 ASP.NET Core 项目,并且已经使用默认迁移历史记录表 ( dbo.__EFMigrationsHistory
) 运行了迁移。我想将所有迁移存储在具有不同名称和架构的表中。
在ConfigureServices
(内Startup.cs
)我有以下代码(根据文档):
serviceCollection.AddDbContext<DatabaseContext>(
options =>
{
options.UseSqlServer(
connectionString,
x => x.MigrationsHistoryTable("__MigrationHistory", "MySchema"));
});
我手动创建了MySchema.__MigrationHistory
表,从 复制了所有数据dbo.__EFMigrationsHistory
,然后删除了dbo.__EFMigrationsHistory
。
我原以为这意味着所有未来的迁移都会进入MySchema.__MigrationHistory
,但是当我添加一个空白迁移作为测试并运行script-migration -from previousMigrationName
(从 Visual Studio 包管理器控制台)它给我的 SQL 时,它会将历史记录添加到dbo.__EFMigrationsHistory
.
MySchema.__MigrationHistory
为了让 EF Core用于所有新迁移,我还需要做什么?
解决方案
事实证明,这个问题的原因是我不明白 EF Core 是如何配置为DbContext
在与 ASP.NET Core 应用程序不同的程序集中运行迁移的。
ASP.NET Core 应用程序有一个Startup.cs
我修改过的,但我不知道DbContext
包含IDesignTimeDbContextFactory
. 在这个类中,还有另一个对该UseSqlServer
方法的调用,我也需要在那里添加选项。这是实际用于迁移的内容,因为它们不通过 ASP.NET Core 应用程序。
推荐阅读
- angular - Angular 6 - 清理 LESS 的快速方法
- sql-server - 如何替换 ssis 包中的 uni 代码字符
- python - Python, all combinations of element addition between two lists, with constraint
- python - 使用文本编辑和终端创建 os x 文件目录
- dart - 颤振将值设置为文本字段
- java -
尝试使用堆栈识别回文时出错? - spring - 同时使用@Document 和@Entity
- yocto - 是否可以在不构建整个核心的情况下对层进行 bitbake?
- python - 如何一次运行批处理 5 个文件,然后继续处理列表中的下 5 个文件?
- javafx - 任务有时会保持“锁定”状态