实体框架:无法加载指定的元数据资源。

74

可能是重复问题:
MetadataException: Unable to load the specified metadata resource

希望有人能帮忙解决这个问题。我已经尝试了其他帖子和其他网站上的数十种方法,但无法使其正常工作。

Entity Framework一直在工作,但第二天就开始在实体类的构造函数上给我报错:无法加载指定的元数据资源。

我已经检查了连接字符串,删除并重新添加了所有内容,但仍然无法让它正常工作。

我的模型命名空间为WraithNath.co.uk.Models。

元数据工件嵌入在程序集中。

我的连接字符串如下:

<add name="ConnectionString" connectionString="Data Source=.\SQL2008;AttachDbFilename=|DataDirectory|\WraithNath.co.uk.mdf;Integrated Security=True;" providerName="System.Data.SqlClient" />
   <add name="Entities" connectionString="metadata=res://*/Models.WraithNath.co.uk.csdl|res://*/Models.WraithNath.co.uk.ssdl|res://*/Models.WraithNath.co.uk.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=.\SQL2008;AttachDbFilename=|DataDirectory|\WraithNath.co.uk.mdf;Integrated Security=True;MultipleActiveResultSets=True&quot;" providerName="System.Data.EntityClient" />

当我在Reflector中查看程序集时,无法找到我需要的三个文件。

有没有一步一步的指南来解决这个问题?我已经尝试了谷歌搜索结果前三页中所有与“entity framework Unable to load the specified metadata resource”相关的链接。


当您打开EDMX模型的属性时,Metadata Artifact Processing属性中的值是什么? - Ladislav Mrnka
我的问题是我没有在实体模型前面加上模型。 - Pomster
1个回答

166

Craig Stuntz写了一篇非常详细(在我看来)的博客文章,介绍了如何解决这个错误消息,我会从那里开始。

下面的res:(资源)引用需要指向你的模型。

<add name="Entities" connectionString="metadata=
    res://*/Models.WraithNath.co.uk.csdl|
    res://*/Models.WraithNath.co.uk.ssdl|
    res://*/Models.WraithNath.co.uk.msl;
请确保每个文件的名称在“*/”之后都有您的.edmx文件的名称,并将“edmx”更改为该资源的扩展名(.csdl、.ssdl或.msl)。
另外,指定程序集可能会有所帮助,而不是使用“//*/”。
最坏的情况下,您可以通过使用以下方法检查所有内容(速度较慢,但应始终找到资源):
<add name="Entities" connectionString="metadata=
        res://*/;provider= <!-- ... -->

1
谢谢,我简直不敢相信我没有找到那个网站! - WraithNath
@PsychoCoder - 我确实看过这个,但当你再次提到它时,我认真阅读了一遍,它解决了我的问题。 - m.edmondson
在我的情况下,我只是使用不同的名称重新创建了模型,但连接字符串相同。这正是我所需要的完美解决方案。 - zacharydl
1
我不明白这个答案 :( - Ali.Rashidi
1
那个网站就是答案!在我的情况下,我看错了配置文件。感谢提到那个网站! - Humza Khan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接