我创建了一个实现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正常运行?
答案 0 :(得分:1)
我发现将Database.SetInitializer添加到Application_Start不会每次都有效。
我在DbContaxt中添加了一个静态构造函数,它调用了Database.SetInitializer
public class BeerRecommenderContext: DbContext
{
static BeerRecommenderContext ()
{
Database.SetInitializer<BeerRecommenderContext >(new BeerRecommenderInitializer());
}
}