Sql server 如何为EF core迁移历史记录表设置自定义名称,并在生成迁移脚本时使用该名称?
我有一个ASP.NET Core项目,它使用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
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
。如果您创建空白数据库并尝试用所有迁移更新它,那么它会工作吗?或者,如果您只为空白数据库创建了一个初始迁移(仅用于测试)?感谢您的帮助。我已经找到了问题所在,并发布了一个答案,希望将来能对其他人有所裨益。