我回答了有关无缝更新的问题:
Seamless EF Migrations from Staging > Production with Schema Change
我认为实现此目的的一种简单方法是简单地抑制错误The model backing the 'ApplicationDbContext' context has changed
- 这样我就可以
这就是我现在所做的,但是在3
和4
之间,dbContext会在几秒钟内抛出该错误。如果我可以简单地抑制那个错误......我们可以在几秒钟内消除95%的错误(5%是我们从漂移的模型中捕获的错误)。
有没有办法抑制此错误,但是是否启用了迁移?
更新
使用链接here我可以测试以下内容:
public ApplicationContext()
: base("name=DefaultConnection") {
this.Database.Log = s => System.Diagnostics.Debug.WriteLine(s);
Database.SetInitializer(new SuppressedInitializer<ApplicationContext>());
}
public class SuppressedInitializer<TContext> : IDatabaseInitializer<TContext>
where TContext : DbContext {
public void InitializeDatabase(TContext context) {
if (!context.Database.Exists()) {
throw new ConfigurationException(
"Database does not exist");
}
else {
if (!context.Database.CompatibleWithModel(true)) {
var contextException = new InvalidOperationException("The database is not compatible with the entity model.");
Elmah.ErrorSignal.FromCurrentContext().Raise(contextException);
// intentionally don't throw so that the application may continue
}
}
}
}
contextException
是在我预期的时候创建的,我相信这是一个解决方案。