我在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/