我正在尝试使用Entity Framework 6.0 rc1忽略“自动”迁移。我的问题是我现在不需要这个功能,每次我的应用程序运行时,我都可以看到所有实体日志尝试创建所有表。
提前感谢。
我正在尝试使用Entity Framework 6.0 rc1忽略“自动”迁移。我的问题是我现在不需要这个功能,每次我的应用程序运行时,我都可以看到所有实体日志尝试创建所有表。
提前感谢。
您可以将此代码放入您的 app.config 文件的 entityFramework 部分中:
<contexts>
<context type="YourNamespace.YourDbContext, YourAssemblyName" disableDatabaseInitialization="true"/>
</contexts>
这个 MSDN 页面详细介绍了Entity Framework Configuration Section。
app.config
是什么?你是不是指的是web.config
? - MuflixYourAssemblyName
? - Muflix试一试:
internal sealed class Configuration : DbMigrationsConfiguration<YourContext>
{
public Configuration()
{
AutomaticMigrationsEnabled = false;
}
}
更新:
您也可以尝试这个方法:
Database.SetInitializer<YourContextType>(new CreateDatabaseIfNotExists());
通过 web.config 查看 - https://msdn.microsoft.com/zh-cn/data/jj556606.aspx#Initializers
通过代码(奇怪的是,非常简单的答案)
public class MyDB : DbContext
{
public MyDB()
{
Database.SetInitializer<MyDB>(null);
}
}
或者在 Global.asax.cs 中
public class MvcApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
// ...
Database.SetInitializer<MyDB>(null);
/// ...
}
}
DbContext
的构造函数中。 - Issa FramSetInitializer
添加到我的DbContext类的静态构造函数
中是最简洁的方法。 - Michal Ciechan如果您在寻找一个简单的答案来禁用迁移,因为您键入了“Enable-Migrations”,现在事情并没有按照您预期的方式工作,比如没有运行您认为应该运行的种子方法,那么请查看解决方案资源管理器并删除迁移文件夹。这将阻止代码查找迁移配置以查找初始化代码。要重新获取迁移文件夹,只需再次运行“Enable-Migrations”。
var migrationsMethod = typeof(System.Data.Entity.Database).GetMethod("SetInitializer");
foreach (var contextType in allContextTypes)
{
migrationsMethod.MakeGenericMethod(contextType).Invoke(null, new object[] { null });
}
allContextTypes
的? - Issa Fram禁用自动迁移也可以在调用enable-migrations
命令(创建Configuration
类)期间进行配置,使用EnableAutomaticMigration
参数并将其值设置为false
:
enable-migrations -EnableAutomaticMigration:$false -ContextTypeName FullyQualifiedContextName
这将创建一个Configuration
类,将AutomaticMigrationsEnabled
属性设置为false,就像上面的答案中一样。
在Entity Framework教程页面中这篇文章中提到了enable-migrations
命令的EnableAutomaticMigration
参数(但是他们使用默认值true
)。
static MyContext()
{
System.Data.Entity.Database.SetInitializer<MyContext>(null);
}
Database.SetInitializer<TContext>(null)
禁用数据库初始化器吗? - Pawel