如何在EF 5.0中禁用自动表创建?

时间:2012-05-23 18:25:24

标签: entity-framework-5

我在我的项目中为Framework 4.0安装了Entity Framework 5.0 RC。但是当我尝试从Views中获取数据时,我得到了错误。 EF尝试为此实体创建表。

2 个答案:

答案 0 :(得分:22)

在应用程序启动时使用它来关闭数据库初始化和迁移:

Database.SetInitializer<YourContextType>(null);

答案 1 :(得分:10)

如果要完全关闭数据库初始化/迁移,无论您在哪个项目中使用Context,都可以向上下文添加静态构造函数以调用初始化程序。 这可确保在首次构建/使用上下文之前调用SetInitializer。

public class YourContext : DbContext
{
    static YourContext()
    {
        // don't let EF modify the database schema...
        Database.SetInitializer<YourContext >(null);
    }

    public YourContext() : base("name=YourContext")
    {}
    ...
}

但是,如果您只想在少数几个项目中执行此操作,那么最好通过应用程序启动明确地执行此操作 - 例如在正常的IoC设置期间,如Ladislav建议的那样。