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

时间:2013-08-21 07:59:13

标签: c# asp.net-mvc-3 entity-framework edmx devart

我的连接字符串如下:

<add name="RollCallDBEntities" connectionString="metadata=res://System.Engine/RollcallNS.csdl|res://System.Engine/RollcallNS.ssdl|res://System.Engine/RollcallNS.msl;provider=Devart.Data.Oracle;provider connection string=&quot;User Id=user;Password=password;Server=127.0.0.1;Direct=True;Sid=ORCL&quot;" providerName="System.Data.EntityClient" />

我的代码如下:

using (var db= new RollCallDBEntities()) //ok
{
   var query = db.TBL_ROLLCALL.ToList(); //Unable to load the specified metadata resource.
}

我的集会:

System.Engine

有人有什么想法吗?

这些链接没有解决我的问题:
MetadataException: Unable to load the specified metadata resource
entity framework Unable to load the specified metadata resource
Entity Framework: Unable to load the specified metadata resource
Unable to load the specified metadata resource

14 个答案:

答案 0 :(得分:58)

我得到了这样的例外。问题是我重命名了我的.edmx文件,忘了更改EF Web.config文件的连接字符串中的名称:

metadata=res://*/MyModel.csdl|res://*/MyModel.ssdl|res://*/MyModel.msl;

答案 1 :(得分:5)

请参阅http://forums.devart.com/viewtopic.php?t=22092

如果这没有帮助,请注明:

  • 您使用的是ADO.NET实体数据模型(.edmx)还是Devart Entity Model(。edml)?
  • 模型文件的Build Action属性的值
  • 模型的元数据工件处理属性的值
  • dotConnect for Oracle的内部版本号(x.xx.xxx)
  • Visual Studio的版本
  • 按照 Pawel 的建议检查是否嵌入了资源 集会

答案 2 :(得分:5)

为我解决此问题的最简单的解决方案是删除与bin文件夹位于同一级别的obj文件夹,然后重新运行应用程序,我的上帝它花了比它需要更长的时间

答案 3 :(得分:2)

我在一个解决方案中使用了EntityFramework 6.0,其中包括多个项目,如WebSite级别项目,DataAccess级别项目。在我的解决方案中,迁移应该在DataAccess级别项目中进行。

在Package Manager控制台中运行Add-Migration命令时,引发了“无法加载指定的元数据资源”。

最后,我发现我将WebSite级别项目设置为“Startup”项目,并将此触发器设置为异常。似乎系统会首先自动检查StartUp项目中的连接字符串设置。我在WebSite级别项目中设置的数据连接字符串是

“元数据= RES:// /ApplicationEntities.csdl|res:// /ApplicationEntities.ssdl|res://*/ApplicationEntities.msl;provider=System.Data.SqlClient;provider connection string =“data source =。; initial catalog = YourDatabaseName; integrated security = True; MultipleActiveResultSets = True; App = EntityFramework”“

首先是代码不正确。

正确的连接字符串应为:

“Data Source = .; Initial Catalog = YourDatabaseName; Integrated Security = True”

结论,请首先在解决方案的“StartUp”项目中检查web.config中的“connectionStrings”部分。

答案 4 :(得分:0)

如果您不确定元数据文件的正确路径是什么,可以通过编译应用程序找到,然后使用JetBrains&#39;打开DLL。 dotPeek并查看Resources文件夹以查找.csdl等文件。

答案 5 :(得分:0)

我也遇到了这个问题,因为我忘了引用包含EDMX文件的项目。

答案 6 :(得分:0)

我有一个与devart mysqlconnect类似的产品 - 也许这可能会有所帮助。

我有一个名为EFModels的项目,它包含.edml文件,并被其他项目引用。

我注意到引用EFModels的项目的Release版本包含EFModels.dll,但它的大小(127kb vs 437kb)比EfModels.dll的Debug版本小得多。将EFModels.dll从调试版本移动到Release版本为我解决了这个问题,因为Release版本没有嵌入ssdl等。

答案 7 :(得分:0)

我也遇到了这个问题,这是因为我正从Entity Framework Model First转到Entity Framework Code First,却忘记了将EDMX连接字符串更改为“常规”连接字符串。

答案 8 :(得分:0)

此答案特定于Devart Entity开发人员edml文件。

当我升级csproj格式(Visual Studio 2017使用简单格式)时,出现此错误。 csproj具有一项功能,您不需要包含每个文件,而是默认情况下包括该文件夹下的所有相关文件,因此实体框架文件与cs文件的处理方式相同,因此默认情况下不会将其嵌入到程序集中。

我需要手动将edml文件的生成操作更改为“ DevartEntityDeploy”,这解决了我的问题。

enter image description here

答案 9 :(得分:0)

我也遇到了这个问题,因为我是app.config中缺少的EntityFramework配置部分。

我有这个:
 <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />

但不是这样:
<entityFramework> <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework"> <parameters> <parameter value="mssqllocaldb"/> </parameters> </defaultConnectionFactory> <providers> <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer"/> </providers> </entityFramework>

答案 10 :(得分:0)

我遇到了同样的问题,就我而言,问题在于更改模型,名为“ ... Web Deploy.pubxml”的文件具有“ metadata = res:// / Models”。 /em>**.csdl”等,名称不正确(未更新)。手动更正后可以正常工作!

答案 11 :(得分:0)

我们从 .net核心1 升级到 3.1 ,从 Visual Studio 2015 升级到 Visual Studio 2019 。我们注意到某些文件的构建操作已被重置。因此,我们将所有以.tt结尾的文件的构建操作更改为内容,并将它们的 Copy to Output directory < / strong>更改为请勿复制
我们还必须将 .edmx 文件的构建操作更改为 EntityDeploy ,并将其复制到输出目录的值更改为请勿复制
有人吗?

答案 12 :(得分:0)

在我的情况下,排除 .edmx 文件并包含它有效!

答案 13 :(得分:0)

右键单击项目>>Clean>> 然后Rebuild

为我工作