我正在尝试在 Azure 试验中启动 MVC 3 部署,但似乎在让 EF4.1 数据库自行创建时遇到了障碍。
运行时会连接成功,但是报错:
Invalid object name 'dbo.TableName'.
我相信这是因为数据库存在,但其中没有表。我已经能够在本地重现它 - 如果我删除我的 SQL Express 数据库,数据库娱乐工作正常,但如果我然后删除所有表并离开数据库则不行。
我已经阅读了可以添加到 Global.asax 的方法:
protected void Application_Start()
{
// Use any of:
System.Data.Entity.Database.SetInitializer<MyDatabaseContext>(new DropCreateDatabaseIfModelChanges<MyDatabaseContext>());
System.Data.Entity.Database.SetInitializer<MyDatabaseContext>(new CreateDatabaseIfNotExists<MyDatabaseContext>());
System.Data.Entity.Database.SetInitializer<MyDatabaseContext>(new DropCreateDatabaseAlways<MyDatabaseContext>());
}
......这似乎不起作用。有些给出了关于无法在 EdmMetadata 表中获取模型哈希的错误。
如何让 EF4.1/Code First 在现有数据库中创建数据库结构? (在 Azure 中...)。或者我是否必须从 SQL Management Studio 编写 DB 脚本,然后针对目标 DB 运行它?
最佳答案
查看 David.Cline(开发)博客“在模型更改时删除和创建表”:
http://www.davidcline.info/2012/05/technologies-c-v4.html
这个链接可能会有所帮助:
http://blogs.microsoft.co.il/blogs/gilf/archive/2011/05/30/creating-a-code-first-database-initializer-strategy.aspx
谢谢,
哈恰图尔
关于entity-framework-4.1 - SQL Code First DB - 创建表,而不是删除/创建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7395098/