我正在使用 EF 4.3.1,并且我有 100 多个驱动 1 个基本上下文的上下文。对于所有上下文,我想禁用数据库初始化。
是否可以为实体框架设置默认行为?
提前致谢
我正在使用 EF 4.3.1,并且我有 100 多个驱动 1 个基本上下文的上下文。对于所有上下文,我想禁用数据库初始化。
是否可以为实体框架设置默认行为?
提前致谢
Database.SetInitializer<TContext>
是你所追求的。将 null 传递给此方法也应该禁用初始化。
http://msdn.microsoft.com/en-us/library/gg679461(v=vs.103).aspx
您可以更改 * .config文件以禁用数据库初始化。这是根据上下文完成的,但也许它适用于您的基本上下文。
<contexts>
<context type=" Blogging.BlogContext, MyAssembly" disableDatabaseInitialization="true" />
</contexts>
EF 4.3 配置文件设置中给出了更好的解释
//Gather all the DbContexts types in the assembly
var allDbContextsTypes = Assembly.GetExecutingAssembly().GetTypes().Where(t => t.BaseType == (typeof(DbContext))).ToList();
foreach (Type dbContextType in allDbContextsTypes)
{
//Get the SetInitializerMethod
MethodInfo initializerMethod = typeof(Database).GetMethod("SetInitializer");
//Make it generic! (Oh yeah)
MethodInfo dbContextInitializerMethod = initializerMethod.MakeGenericMethod(dbContextType);
//Invoke the method with null initializer
dbContextInitializerMethod.Invoke(null, new object[]{null});
}
最后,它给出了类似的内容:Database.SetInitializer<YourDbContext>(null);
其中 YourDbContext 是循环中的当前 dbContext 类型