无法加载指定的元数据资源
我遇到了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="data source=localhostsqlexpress;initial catalog=Funscribe;user id=sys_Funscribe;password=blah;multipleactiveresultsets=True;application name=EntityFramework"" providerName="System.Data.EntityClient" />
我的mvc应用程序继续工作,但是当我运行控制台应用程序时,我遇到了可怕的问题:
“无法加载指定的元数据资源。”
我试图将连接字符串更改为通配符设置:
<add name="FundirectoryEntities" connectionString="metadata=res://*/;provider=System.Data.SqlClient;provider connection string="data source=localhostsqlexpress;initial catalog=Funscribe;user id=sys_Funscribe;password=blah;multipleactiveresultsets=True;application name=EntityFramework"" 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="data source=localhostsqlexpress;initial catalog=Funscribe;user id=sys_Funscribe;password=blah;multipleactiveresultsets=True;application name=EntityFramework"" 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