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

DbDatabase.SetInitializer<MyDBContext>
   (new DropCreateDatabaseIfModelChanges<MyDBContext>());

但它似乎不起作用。

尽管我的模型已更改,并且我尝试使用新添加的表之一,但只是说找不到该表。
Invalid object name 'dbo.TableName'.

但是,如果运行此命令,它似乎可以正常工作,并且正在创建表:
DbDatabase.SetInitializer<MyDBContext>(new DropCreateDatabaseAlways<MyDBContext>());

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

我做错了什么?

最佳答案

就其值(value)而言,我在使用两种DropCreate策略时都遇到了很多麻烦,因为在关闭浏览器后,Cassini仍在运行。 (我在IIS Express上也遇到了同样的问题。)由于本地Web服务器仍在运行,因此Application_Start不会再次触发,因此我放置在那里的初始化从未执行。

我通过启用“编辑并继续”解决了该问题:

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

当浏览器关闭时,这将强制关闭本地Web服务器。

关于c# - EF代码优先:DropCreateDatabaseIfModelChanges不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5375965/

10-11 04:19