【问题标题】:EF 6 "Unable to load the specified metadata resource" -- but I'm not using edmxEF 6“无法加载指定的元数据资源”——但我没有使用 edmx
【发布时间】:2016-05-19 14:27:52
【问题描述】:

很抱歉,如果有人问过这个问题,但我已经浏览了我能找到的所有其他帖子,似乎每个人都在使用 EDMX,而不是“生产”数据库。

我收到以下错误:

System.Data.Entity.Core.MetadataException:无法加载指定的元数据资源

尝试访问我的应用程序时。我的连接字符串如下:

<add name="FormAssemblyEntities" connectionString="metadata=res://*/Models.Entities.FormAssembly.csdl|res://*/Models.Entities.FormAssembly.ssdl|res://*/Models.Entities.FormAssembly.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=server\instance;initial catalog=dbname;user id=userid;password=password;MultipleActiveResultSets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" />

如果我在本地运行它并且它使用以下连接字符串连接到 edmx,这将非常有效,但是一旦我将它放在我们的 UAT 服务器上并将其指向数据库,我就会收到该错误。

<add name="FormAssemblyEntities" connectionString="Data Source=(LocalDB)\v11.0;attachdbfilename=|DataDirectory|\FormAssembly.mdf;Initial Catalog=FormAssembly;Integrated Security=SSPI;MultipleActiveResultSets=True;" providerName="System.Data.SqlClient" />

我真的不知道从哪里开始。数据库显示为最新,用户有权访问,服务器有权访问 SQL 服务器。

我也试过用 res://FormAssembly/ 和 res://FormAssembly.dll/ 替换 res://*/,但是前者导致同样的错误,而后者说 dll 不能找到(DLL 在 bin 目录中)。

任何帮助将不胜感激。

谢谢,

特拉维斯

【问题讨论】:

  • 如果您查看您的第一个连接字符串,在引用 edmx 时,有一个地方指定了与数据库的连接。还是需要引用UAT服务器上的edmx,只需要改内部连接字符串到UAT数据库即可。
  • 感谢您的回复,但我不确定您的意思。如果我在第一个连接字符串中查找 edmx,我什么也看不到。它在元数据中吗?
  • 再看一下你的第一个连接字符串...这里是:res://*/Models.Entities.FormAssembly.msl;provider=System.Data.SqlClient;***provider connection string=...***。里面是指向实际数据库的第二个连接字符串。这就是您需要在 UAT 环境中更改的内容。
  • 是的,连接字符串属性已正确设置为我的 UAT 数据库,我为我的帖子修改了它。如果您指的是元数据下的 res:// 内容,那么它也存在于我们生产数据库的连接字符串中,并且可以正常工作。还是我误会了你?
  • 如果你没有使用 edmx,那么去掉所有的元数据标签,然后使用 data source=server\instance;initial catalog=dbname;user id=userid;password=password;MultipleActiveResultSets=True; 作为你的连接字符串?

标签: c# entity-framework metadata edmx


【解决方案1】:

就我而言,我的连接字符串的metadata 部分格式不正确。

以下连接字符串适用于我的情况:

<connectionStrings>
  <add name="NorthwindEntities" connectionString="metadata=res://*/Northwind.csdl|res://*/Northwind.ssdl|res://*/Northwind.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=(local);initial catalog=Northwind;integrated security=True;multipleactiveresultsets=True;application name=EntityFramework&quot;" 
       providerName="System.Data.EntityClient" />
</connectionStrings>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-05-15
    • 2013-04-12
    • 2023-03-10
    • 1970-01-01
    • 2016-04-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多