hey*_*ega 8 c# entity-framework
我的数据库中有一个指向3个子数据库实例的上下文.我通过上下文的construtor注入了正确的数据库连接字符串.
但是,我很难让它与自动迁移一起工作.问题是,自动迁移需要一个我无法提供的无参数构造函数,而IDbContextFactory只允许我返回一个连接字符串.
有没有办法可以让迁移脚本针对多个数据库运行,还是需要创建3个单独的上下文?
上下文的每个实例都有一个数据库连接.
假设每个子数据库wille具有相同的代码优先模型,您可以为每个数据库启动同一上下文类的一个实例.
只需调用DbContext.Initialize(true)即可迁移数据库,然后关闭连接.
var context1 = new MigratorContext( connectionString1 );
context1.Initilialize( true );
var context2 = new MigratorContext( connectionString2 );
context2.Initilialize( true );
var context3 = new MigratorContext( connectionString3 );
context3.Initilialize( true );
Run Code Online (Sandbox Code Playgroud)
使用连接字符串为MigratorContext添加构造函数:
public MigratorContext(string connString)
: base( connString)
{
var migrationConfiguration = new MigrationConf();
Database.SetInitializer<MigratorContext>(
new MigrateDatabaseToLatestVersion<
MigratorContext, MigrationConf>(true, migrationConfiguration));
}
public sealed class MigrationConf : DbMigrationsConfiguration<MigratorContext>
{
public MigrationConf()
: base()
{
AutomaticMigrationsEnabled = true;
AutomaticMigrationDataLossAllowed = true;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1529 次 |
| 最近记录: |