我正在尝试学习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但没有文件。
数据库完全是空的,所以我只需要删除它。
我的实际问题我需要回答:如何正确解决这个问题?
答案 0 :(得分:1)
您的问题的答案在于阅读Scott Guthrie's blog
对于那些看到此例外的人:
“自创建数据库以来,支持'Production'上下文的模型已更改。手动删除/更新数据库,或使用IDatabaseInitializer实例调用Database.SetInitializer。”
以下是该怎么做以及如何应对:
首次创建模型时,我们运行DatabaseInitializer来执行创建数据库(如果不存在)或添加种子数据等操作。默认的DatabaseInitializer尝试将使用模型所需的数据库模式与存储在使用数据库创建的EdmMetadata表中的模式的哈希进行比较(当Code First是创建数据库的模式时)。现有数据库将没有EdmMetadata表,因此不会有哈希...如果缺少该表,今天的实现将抛出。我们将在发送fial版本之前更改此行为,因为它是默认版本。在此之前,现有数据库通常不需要任何数据库初始化程序,因此可以通过调用它来关闭上下文类型:
Database.SetInitializer<Production>(null);
希望这可以帮助您解决问题。