我正在关注this来创建一个简单的 MVC 应用程序。创建模型后,当我尝试添加控制器时,出现以下错误:
无法检索“MvcApplication.Models.Movie”的元数据。键“attachdbfilename”的值无效。
有人可以告诉我为什么会收到此错误。
更新:我看到了this,其中通过更改providerName来提供解决方案。但就我而言,它已经是 System.Data.SqlClient 。以下是我的connectionStrings:
<connectionStrings>
<add name="DefaultConnection" connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=aspnet-MvcApplication-20130708120940;Integrated Security=SSPI" providerName="System.Data.SqlClient" />
<add name="MovieDBContext" connectionString="Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\Movies.mdf;Integrated Security=True" providerName="System.Data.SqlClient" />
</connectionStrings>
答案 0 :(得分:3)
错误消息表示AttachDbFilename
的无效值是MovieDbContext
连接字符串的一部分。
连接字符串当前显示此AttachDbFilename=|DataDirectory|\Movies.mdf
,因此现在App_Data
文件夹中缺少mdf文件。
答案 1 :(得分:1)
我找到了解决方案。问题是&#34; | DataDirectory |&#34;。我改变了#34; |&#34;到&#34; \&#34;
答案 2 :(得分:0)
我刚刚解决了这个问题。虽然我是MVC的新手,但我有点不好意思说,我正在尝试解决我遇到的另一个问题并将我的SetInitializer移动到我的classname:DbContext类中。
该应用程序工作正常,数据库创建正常,因为我更改了模型,但我无法使用脚手架工具添加新控制器或修改当前控制器。
我开始收到错误。其中一个列在上面,另一个是:
无法检索'namespace.Models.class'的元数据。一份文件
发生激活错误。物理文件名'\ name.mdf'
可能不正确。诊断并更正其他错误,然后重试
操作。
CREATE DATABASE失败。无法创建列出的某些文件名。
检查相关错误。
将SetInitializer移回我的Global.asax修复了问题。