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

时间:2011-01-19 19:50:44

标签: .net entity-framework

  

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

我希望有人可以帮忙解决这个问题。我曾尝试过关注其他帖子和其他几十个网站,但我可以使用它。

实体框架全部正常工作,然后第二天就开始给我错误:无法加载指定的元数据资源。在实体类的构造函数上。

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

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

元数据artificat嵌入程序集

我的连接字符串如下:

<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中查看时,我无法在程序集中找到我需要的3个文件。

是否有分步指南来解决这个问题?我已经尝试了谷歌前3页的每个链接搜索结果'实体框架无法加载指定的元数据资源'。

1 个答案:

答案 0 :(得分:162)

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”更改为该res的扩展名(.csdl,.ssdl或.msl)。

它也可能有助于指定程序集而不是使用“//*/".

最糟糕的情况是,您可以使用

检查所有内容(有点慢但应始终找到资源)
<add name="Entities" connectionString="metadata=
        res://*/;provider= <!-- ... -->