【问题标题】:Unable to retrieve metadata - MVC application无法检索元数据 - MVC 应用程序
【发布时间】:2013-07-08 11:51:37
【问题描述】:

我关注this 来创建一个简单的MVC 应用程序。创建模型后,当我尝试添加控制器时,出现以下错误:

无法检索“MvcApplication.Models.Movie”的元数据。键“attachdbfilename”的值无效。

谁能告诉我为什么会收到这个错误。

更新:我看到了this,其中解决方案是通过更改 providerName 来提供的。但就我而言,它已经是 System.Data.SqlClient。以下是我的连接字符串:

<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>

【问题讨论】:

  • 我猜你移动了 Movies.mdf,现在编译时找不到了。
  • ASP.NET教程没说要添加。
  • 您的电影 DbContext 连接字符串附加了 Movies.mdf。 AttachDbFilename=|DataDirectory|\Movies.mdf
  • 是的。我不确定这个目录会在哪里。
  • App_data 目录。

标签: c# asp.net-mvc-4 model controller


【解决方案1】:

错误消息显示 AttachDbFilename 的值无效,这是您的 MovieDbContext 连接字符串的一部分。

连接字符串当前显示此AttachDbFilename=|DataDirectory|\Movies.mdf,因此App_Data 文件夹中似乎缺少 mdf 文件。

【讨论】:

    【解决方案2】:

    我找到了解决方案。问题是“|DataDirectory|”。我改变了“|”到“\”

    【讨论】:

      【解决方案3】:

      我刚刚解决了这个问题。尽管我是 MVC 的新手,但我有点尴尬地说,我正在尝试解决我遇到的另一个问题,并将我的 SetInitializer 移到我的类名中:DbContext 类。

      应用程序运行良好,数据库创建良好,因为我更改了模型,但我无法使用脚手架工具添加新控制器或修改当前控制器。

      我开始收到错误。其中一个在上面列出,另一个是:
      无法检索“namespace.Models.class”的元数据。一份文件 发生激活错误。物理文件名“\name.mdf” 可能不正确。诊断并更正其他错误,然后重试 手术。 创建数据库失败。无法创建列出的某些文件名。 检查相关错误。

      将 SetInitializer 移回我的 Global.asax 解决了这个问题。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-06-30
        • 1970-01-01
        • 1970-01-01
        • 2013-11-16
        • 2019-07-19
        • 1970-01-01
        相关资源
        最近更新 更多