关于asp.net mvc:无法加载指定的元数据资源

Unable to load the specified metadata resource

我在实体框架方面遇到了一些严重的问题,我似乎不知道到底发生了什么。

我尝试了很多提供的选项:metadataexception:无法加载指定的元数据资源和著名的Craig Stuntz的博客文章,网址是:http://blog s.teamb.com/craigstentz/2010/08/13/38628/

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

funscribe.data(此处为EDMX文件)

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

funscribe.web(MVC 3应用程序)

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

我从web.config复制了连接字符串,并将其应用于app.config:

1
 

我的MVC应用程序继续工作,但当我运行控制台应用程序时,我会感到恐惧:

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

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

1
 

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

我试图更改它以指定程序集:

1
 

我得到:无法解析程序集"funscribe.data.dll"。

我对在这里该做的事迷路了。我刚刚将这个项目升级到了Visual Studio 2012(在转换为vs 2012之后,我引入了这个新的控制台应用程序)。

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

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

在这件事上任何帮助都非常感谢。


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

1
2
3
4
5
<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引用如下所示:

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

它规定了三件事:

  • 我们正在从资源加载CSDL。那是江户十一〔二〕号

  • 包含资源的程序集的名称,"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.

有关详细信息,请查看此项排除实体框架连接字符串故障

我希望这对你有帮助。


在Visual Studio中重建解决方案帮助了我。

正在生成->重新生成


在我的例子中,connectionString试图查找资源文件,但无法找到。我为解决我的问题所做的是:

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

这将更改元数据连接字符串路径指向他要查找的资源。


在我的例子中,我在Project中删除了我的EDMX文件,并用一个新名称重新创建它,例如,在它是Home_模型之前,稍后它是Home_成本。当我试图调用下面的代码时,它有"无法加载指定的元数据资源"错误。////

1
2
3
4
5
6
    using (var currentEntities = new masterEntities())
    {
        currentUser = currentEntities.Home_User.FirstOrDefault(
            x => x.UserLoginAccount == userLoginAccount && x.UserPwd == userPwd);

    }

/ / /所以在web.config中,我修改了从家庭模式到家庭成本的元数据配置。

然后它工作。显然,当我删除/创建edmx时,vs2015(我的版本)没有更新web.config。


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

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

有几种情况会导致这种情况,但很可能是由于无效的连接字符串。

可能的解决方案:

1.检查连接字符串2.刷新model.edmx3.在model.edmx中选择"从数据库更新模型"选项。

http://mvc4asp.blogspot.in/