Sql server 如何为EF core迁移历史记录表设置自定义名称,并在生成迁移脚本时使用该名称?

Sql server 如何为EF core迁移历史记录表设置自定义名称,并在生成迁移脚本时使用该名称?,sql-server,asp.net-core,entity-framework-core,Sql Server,Asp.net Core,Entity Framework Core,我有一个ASP.NET Core项目,它使用EF Core,并且已经使用默认的迁移历史记录表(dbo.\uEFMigrationsHistory)运行了迁移。我想用不同的名称和模式将所有迁移存储在一个表中 在ConfigureServices(在Startup.cs中)我有以下代码(): servicecolection.AddDbContext( 选项=> { options.UseSqlServer( 连接字符串, x=>x.migrationHistoryTable(“MigrationH

我有一个ASP.NET Core项目,它使用EF Core,并且已经使用默认的迁移历史记录表(
dbo.\uEFMigrationsHistory
)运行了迁移。我想用不同的名称和模式将所有迁移存储在一个表中

ConfigureServices
(在
Startup.cs
中)我有以下代码():

servicecolection.AddDbContext(
选项=>
{
options.UseSqlServer(
连接字符串,
x=>x.migrationHistoryTable(“MigrationHistory”、“MySchema”);
});
我已经手动创建了
MySchema.\uuu MigrationHistory
表,复制了
dbo.\uu efmigrationhistory
中的所有数据,并删除了
dbo.\uu efmigrationhistory

我原以为这意味着所有未来的迁移都将进入MySchema。uu MigrationHistory但当我添加一个空白迁移作为测试并从以前的MigrationName运行脚本迁移时(从Visual Studio软件包管理器控制台)它提供给我的SQL将历史记录添加到
dbo.\uEFMigrationsHistory


要让EF Core在所有新迁移中使用MySchema.\uu MigrationHistory,我还需要做些什么?

事实证明,出现此问题的原因是,当
DbContext
与ASP.NET Core应用程序位于不同的程序集中时,我不了解EF Core是如何配置为运行迁移的


ASP.NET核心应用程序有一个我修改过的
Startup.cs
,但我不知道包含
DbContext
的程序集包含
IDesignTimeDbContextFactory
的实现。在这个类中,还有一个对
UseSqlServer
方法的调用,我还需要在那里添加选项。这就是迁移实际使用的内容,因为它们不经过ASP.NET Core应用程序。

结果表明,出现此问题的原因是,我不了解在
DbContext
与ASP.NET Core应用程序位于不同程序集中时,EF Core是如何配置为运行迁移的


ASP.NET核心应用程序有一个我修改过的
Startup.cs
,但我不知道包含
DbContext
的程序集包含
IDesignTimeDbContextFactory
的实现。在这个类中,还有一个对
UseSqlServer
方法的调用,我还需要在那里添加选项。这就是实际用于迁移的内容,因为它们不经过ASP.NET核心应用程序。

如果您运行脚本迁移,您可以检查您得到了什么:脚本迁移-从以前的MigrationName到BlankMigration好主意,我没有想过尝试。不幸的是,它给出了相同的结果-它插入到
dbo.\uuu EFMigrationsHistory
而不是
MySchema.\uu MigrationHistory
。如果您创建空白数据库并尝试用所有迁移更新它,那么它会工作吗?或者,如果您只为空白数据库创建了一个初始迁移(仅用于测试)?感谢您的帮助。我已经找到了问题所在,并发布了一个答案,希望它能让其他人在将来受益。如果你运行脚本迁移,你能检查一下你得到了什么:脚本迁移-从以前的migrationname到blankmigration好主意,我没想过要尝试。不幸的是,它给出了相同的结果-它插入到
dbo.\uuu EFMigrationsHistory
而不是
MySchema.\uu MigrationHistory
。如果您创建空白数据库并尝试用所有迁移更新它,那么它会工作吗?或者,如果您只为空白数据库创建了一个初始迁移(仅用于测试)?感谢您的帮助。我已经找到了问题所在,并发布了一个答案,希望将来能对其他人有所裨益。