3 回答

TA貢獻(xiàn)1801條經(jīng)驗(yàn) 獲得超8個(gè)贊
如果您的遷移無法正常進(jìn)行,請(qǐng)嘗試Database.Initialize(true)在DbContext ctor中進(jìn)行設(shè)置。
public CustomContext(DbConnection connection)
: base(connection, true)
{
Database.Initialize(true);
}
我在遷移中也遇到類似的問題。在我的解決方案中,我必須始終在ctor中設(shè)置數(shù)據(jù)庫初始化程序,如下所示
public CustomContext(DbConnection connection)
: base(connection, true)
{
Database.SetInitializer(new CustomInitializer());
Database.Initialize(true);
}
在自定義初始化程序中,您必須實(shí)現(xiàn)InitalizeDatabase(CustomContex context)方法,例如。
class CustomInitializer : IDatabaseInitializer<CustomContext>
{
public void InitializeDatabase(CustomContext context)
{
if (!context.Database.Exists || !context.Database.CompatibleWithModel(false))
{
var configuration = new Configuration();
var migrator = new DbMigrator(configuration);
migrator.Configuration.TargetDatabase = new DbConnectionInfo(context.Database.Connection.ConnectionString, "System.Data.SqlClient");
var migrations = migrator.GetPendingMigrations();
if (migrations.Any())
{
var scriptor = new MigratorScriptingDecorator(migrator);
string script = scriptor.ScriptUpdate(null, migrations.Last());
if (!String.IsNullOrEmpty(script))
{
context.Database.ExecuteSqlCommand(script);
}
}
}
}
}
添加回答
舉報(bào)