无法加载指定的元数据资源

我遇到了Entity Framework的一些严重问题,我似乎无法弄清楚发生了什么事情。

我尝试了以下提供的许多选项:MetadataException:无法加载指定的元数据资源和着名的Craig Stuntz的博客文章位于:http://blogs.teamb.com/craigstuntz/2010/08/13/38628/

为了简洁起见,我有3个项目:

Funscribe.Data(EDMX文件位于此处)

Funscribe.Console(控制台应用程序)

Funscribe.Web(MVC 3应用程序)

最初它只是MVC应用程序,我最近添加了这个新的控制台项目。

我从web.config复制连接字符串并将其应用到我的app.config中:

<add name="FundirectoryEntities" connectionString="metadata=res://*/Fundirectory.csdl|res://*/Fundirectory.ssdl|res://*/Fundirectory.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=localhostsqlexpress;initial catalog=Funscribe;user id=sys_Funscribe;password=blah;multipleactiveresultsets=True;application name=EntityFramework&quot;" providerName="System.Data.EntityClient" />

我的mvc应用程序继续工作,但是当我运行控制台应用程序时,我遇到了可怕的问题:

“无法加载指定的元数据资源。”

我试图将连接字符串更改为通配符设置:

<add name="FundirectoryEntities" connectionString="metadata=res://*/;provider=System.Data.SqlClient;provider connection string=&quot;data source=localhostsqlexpress;initial catalog=Funscribe;user id=sys_Funscribe;password=blah;multipleactiveresultsets=True;application name=EntityFramework&quot;" providerName="System.Data.EntityClient" />

我得到: 在映射和元数​​据信息中找不到指定的默认EntityContainer名称“FundirectoryEntities”。

我试着改变它来指定程序集:

<add name="FundirectoryEntities" connectionString="metadata=res://Funscribe.Data.dll/Fundirectory.csdl|res://Funscribe.Data.dll/Fundirectory.ssdl|res://Funscribe.Data.dll/Fundirectory.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=localhostsqlexpress;initial catalog=Funscribe;user id=sys_Funscribe;password=blah;multipleactiveresultsets=True;application name=EntityFramework&quot;" providerName="System.Data.EntityClient" />

我得到: 无法解析程序集'Funscribe.Data.dll'。

我迷失在我应该做的事情上。 我刚刚将这个项目升级到Visual Studio 2012(我在转换到VS 2012之后引入了这个新的控制台应用程序)。

我还注意到Funscribe.Data.dll位于控制台项目的bin文件夹中,我手动删除了这些文件并观察它被重新创建。 而令我感到困惑的是网络应用程序继续正常工作

所有项目都在.NET 4.0上。 控制台应用程序使用.NET 4.0而不是客户端配置文件版本。

任何有关这个问题的帮助,不胜感激。


具有名为Simple Mvc.Data.dll的程序Mvc.Data.dll称为Model.edmx的实体框架模型的应用程序的元数据参数可能如下所示:

<connectionStrings>
    <add name="MyEntities" connectionString="metadata=
            res://Simple Mvc.Data.dll/Model.csdl|
            res://Simple Mvc.Data.dll/Model.ssdl|
            res://Simple Mvc.Data.dll/Model.msl;provider= <!-- ... -->

所以你可以看到在运行时我们需要的EDMX的三个部分都有一个参考。 它们都以相同的方式工作,所以我们先仔细检查一下。 CSDL引用如下所示:

        res://Simple Mvc.Data.dll/Model.csdl

它指定了三件事情:

  • 我们正在从资源加载CSDL。 这是"res://" part.

  • 包含资源"Simple Mvc.Data.dll"的程序集的名称。 如果你的程序集有很强的名字,那么你可以在这里指定一个强壮的名字。

  • 资源本身的名称"Model.csdl" 。 不要将此与EDMX或型号名称混淆。 在这种情况下,它们碰巧是相同的,除了扩展名,但这并非总是如此!

  • 如果您的资源没有碰到与您的模型相同的名称,或者程序集没有被加载,它可能会失败。

    有关更多信息,请查看此实例框架连接字符串疑难解答

    我希望这对你有帮助。


    在我的情况下,connectionString试图找到资源文件,但无法。 我做了什么来解决我的问题是:

    右键单击EDMX图 - >转到属性 - >连接 - >元数据工件处理 - >然后更改为复制到输出目录并重建。

    这会将您的元数据连接字符串路径点更改为他尝试查找的资源。


    MetadataException:无法加载指定的元数据资源

    这意味着应用程序无法加载EDMX。

    有几件事情会导致这种情况,但最有可能的原因是连接字符串无效。

    可能的解决方案:

    1.检查连接字符串2.Refresh model.edmx 3.在model.edmx中选择“从数据库更新模型”选项

    http://mvc4asp.blogspot.in/

    链接地址: http://www.djcxy.com/p/38803.html

    上一篇: Unable to load the specified metadata resource

    下一篇: MetadataException: Schema specified is not valid