1

我正在尝试学习 ASP.NET MVC 并搜索互联网进出,包括 SO。很多关于 |DataDirectory| 的问题和答案 地点和方式。

调试站点时中断:

"The model backing the 'ASPNETDBContext' context has changed since the database was created...".

然后我检查了路径:|DataDirectory|ASPNETDBContext.sdf

 string path = AppDomain.CurrentDomain.GetData( "DataDirectory" ).ToString();

它指向项目的 App_Data 但那里没有文件。

数据库完全是空的,所以我只需要删除这个东西。

我需要回答的实际问题是:如何正确解决这个问题?

进行了跟进:另外:该文件在哪里!

4

1 回答 1

1

您的问题的答案在于阅读Scott Guthrie 的博客

对于那些看到此异常的人:

“自创建数据库以来,支持‘生产’上下文的模型已更改。手动删除/更新数据库,或使用 IDatabaseInitializer 实例调用 Database.SetInitializer。”

这是正在发生的事情以及如何处理它:

首次创建模型时,我们运行 DatabaseInitializer 来执行诸如创建数据库(如果数据库不存在)或添加种子数据之类的操作。默认的 DatabaseInitializer 尝试将使用模型所需的数据库架构与存储在使用数据库创建的 EdmMetadata 表中的架构哈希进行比较(当 Code First 是创建数据库的人时)。现有的数据库将没有 EdmMetadata 表,因此不会有哈希……如果该表丢失,今天的实现将抛出。在我们发布最终版本之前,我们将努力改变这种行为,因为它是默认的。在此之前,现有数据库通常不需要任何数据库初始化程序,因此可以通过调用以下方法为您的上下文类型关闭它:

Database.SetInitializer<Production>(null);

希望这将帮助您解决问题。

于 2012-08-29T04:41:12.197 回答