asp.net-mvc – 无法加载指定的元数据资源

前端之家收集整理的这篇文章主要介绍了asp.net-mvc – 无法加载指定的元数据资源前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
实体框架我有一些严重的问题,我似乎无法弄清楚发生了什么。

我尝试了许多选项:MetadataException: Unable to load the specified metadata resource和着名的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=localhost\sqlexpress;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=localhost\sqlexpress;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=localhost\sqlexpress;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的程序集中,名为Model.edmx的Entity Framework模型的应用程序的元数据参数可能如下所示:
<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://”部分。
>包含资源的程序集的名称“Simple Mvc.Data.dll”。如果你的程序集是强名字的,你可以在这里指定一个强大的名字,其所有的冗长的荣耀。
>资源本身的名称,“Model.csdl”。不要将其与EDMX或型号名称混淆。在这种情况下,它们恰好是相同的,除了扩展,但这并不总是真的!

It will probably fail if your resources don’t happen to have the same
name as your model,or if the assembly doesn’t happen to be loaded.

有关更多信息,请查看Troubleshooting Entity Framework Connection Strings

我希望这将有助于你。

原文链接:https://www.f2er.com/aspnet/252608.html

猜你在找的asp.Net相关文章