如何在Entity Framework 6.0中禁用迁移

Mic*_*ges 66 entity entity-framework ef-migrations

我试图忽略使用Entity Framework 6.0 rc1的"自动"迁移.我的问题是我现在不想要这个功能,每次运行我的应用程序时,我都可以看到所有实体日志都试图创建所有表.

期待感谢.

Car*_*ira 47

您可以将它放在app.config的entityFramework部分中:

<contexts>
  <context type="YourNamespace.YourDbContext, YourAssemblyName" disableDatabaseInitialization="true"/>
</contexts>
Run Code Online (Sandbox Code Playgroud)

这个msdn页面告诉所有关于实体框架配置部分.

  • 此页面告诉所有有关实体框架配置部分:https://msdn.microsoft.com/en-us/data/jj556606 (4认同)

Sey*_*baf 46

试试这个:

internal sealed class Configuration : DbMigrationsConfiguration<YourContext>
{
    public Configuration()
    {
        AutomaticMigrationsEnabled = false;
    }
}
Run Code Online (Sandbox Code Playgroud)

更新:

你也可以试试这个:

Database.SetInitializer<YourContextType>(new CreateDatabaseIfNotExists());
Run Code Online (Sandbox Code Playgroud)

  • 是的,现在它正在运作.我想我做错了什么.问题是我删除了__migratioHistory表和所有迁移文件.我做了Database.SetInitializer(new NullDatabaseInitializer <EfContext>()); 和Database.SetInitializer一样<TContext>(null)谢谢你们 (2认同)
  • 伙计们,我想我的问题并不清楚.我意识到我的问题是我有一个继承自DbContext的抽象基类,称为DefaultDbContext.问题是我做了Database.SetInitializer <DefaultDbContext>(null),但正确的方法是Database.SetInitializer <ConcretClassA>(null).谢谢! (2认同)

Aar*_*man 27

通过web.config参见 - https://msdn.microsoft.com/en-us/data/jj556606.aspx#Initializers

通过代码(奇怪的是,MUCH答案更简单)

public class MyDB : DbContext
{
    public MyDB()
    {
        Database.SetInitializer<MyDB>(null);
    }
}
Run Code Online (Sandbox Code Playgroud)

或者在Global.asax.cs中

public class MvcApplication : System.Web.HttpApplication
{
    protected void Application_Start()
    {
        // ...

        Database.SetInitializer<MyDB>(null);

        /// ...

    }
}
Run Code Online (Sandbox Code Playgroud)

  • 你会把它放在哪里?为什么不在构造函数中?(真正的问题,不是讽刺) (3认同)
  • 对于Code First EF,这是最干净的答案. (2认同)
  • 不要把它放在`DbContext`的构造函数中 (2认同)
  • 就我个人而言,我发现将“SetInitializer”添加到 DbContext 类的“静态构造函数”中是最干净的方法。 (2认同)