EF CodeFirst:DropCreateDatabaseIfModelChanges不起作用

rei*_*der 15 c# entity-framework ef-code-first entity-framework-4.1

我在Global.asax中使用以下代码:

DbDatabase.SetInitializer<MyDBContext>
   (new DropCreateDatabaseIfModelChanges<MyDBContext>());
Run Code Online (Sandbox Code Playgroud)

但它似乎没有用.

虽然我的模型已经改变,我试图使用其中一个新添加的表,但它只是说找不到表.

Invalid object name 'dbo.TableName'.
Run Code Online (Sandbox Code Playgroud)

但是,如果我运行它,它似乎工作,并且正在创建表:

DbDatabase.SetInitializer<MyDBContext>(new DropCreateDatabaseAlways<MyDBContext>());
Run Code Online (Sandbox Code Playgroud)

它确实更新了我的数据库.

我做错了什么?

Rya*_*ndy 10

对于它的价值,我遇到了两个 DropCreate策略遇到了很多麻烦,因为在关闭浏览器后Cassini仍在运行.(我对IIS Express也有同样的问题.)因为本地Web服务器仍在运行,Application_Start所以没有再次触发,所以我放在那里的初始化从未执行过.

我通过启用编辑并继续来解决它:

项目属性 > Web > 调试器 > 启用编辑并继续

这会强制本地Web服务器在浏览器关闭时关闭.


rei*_*der 8

结果是master数据库的用户权限.奇怪的是,使用DropCreateDatabaseAlways不需要master数据库的权限,IfModelChanges也是如此.