【问题标题】:Entity Framework 4.1 does not drop database when I implement DropCreateDatabaseAlways当我实现 DropCreateDatabaseAlways 时,Entity Framework 4.1 不会删除数据库
【发布时间】:2011-12-04 22:56:46
【问题描述】:

我创建了一个实现 DbContext "BeerRecommenderContext" 的上下文类和一个实现的初始化器

DropCreateDatabaseAlways<BeerRecommenderContext>

当我运行/调试项目时,实体框架不会删除旧数据库并创建新数据库,因此不会反映模型中的更改,这会导致问题。然后我手动删除数据库并重新运行,实体框架不会创建数据库。我再次运行它,实体框架成功构建了新数据库。我对连接字符串不是很熟悉,所以这可能是个问题:

<add name="BeerRecommenderContext"
     connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;
     database=BeerRecommenderContext.mdf;
     AttachDBFilename=|DataDirectory|BeerRecommenderContext.mdf;
     User Instance=true"
     providerName="System.Data.SqlClient" />

在我的 Global.asax.cs 文件的 Application_Start 方法中,我添加了这一行

Database.SetInitializer<BeerRecommenderContext>(new BeerRecommenderInitializer());

如何让 DropCreateDatabaseAlways 正常执行?

【问题讨论】:

    标签: asp.net-mvc-3 entity-framework-4.1 ef-code-first sql-server-2008-r2


    【解决方案1】:

    我发现将 Database.SetInitializer 添加到 Application_Start 并不是每次都有效。

    我向调用 Database.SetInitializer 的 DbContaxt 添加了一个静态构造函数

    public class BeerRecommenderContext: DbContext
    {
    
        static BeerRecommenderContext ()
        {
            Database.SetInitializer<BeerRecommenderContext >(new BeerRecommenderInitializer());
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-06-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-03
      相关资源
      最近更新 更多