32

我的连接字符串如下:

<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

4

14 回答 14

74

我遇到了这样的异常。问题是我重命名了我的.edmx文件并忘记更改 EFWeb.config文件的连接字符串中的名称:

metadata=res://*/MyModel.csdl|res://*/MyModel.ssdl|res://*/MyModel.msl;
于 2013-11-05T19:03:05.843 回答
10

为我解决这个问题的最简单的解决方案是删除与 bin 文件夹位于同一级别的 obj 文件夹并重新运行应用程序,我的天哪,它花费的时间比它需要的要长

于 2018-05-07T21:16:59.900 回答
6

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

如果这没有帮助,请指定:

  • 您使用的是 ADO.NET 实体数据模型 (.edmx) 还是Devart 实体模型(.edml)?
  • 模型文件的 Build Action 属性的值
  • 模型的元数据工件处理属性的值
  • dotConnect for Oracle 的内部版本号 (x.xx.xxx)
  • 你的 Visual Studio 版本
  • 按照Pawel的建议检查资源是否嵌入到程序集中
于 2013-08-26T10:06:42.523 回答
2

我在一个解决方案中使用了 EntityFramework 6.0,其中包括多个项目,例如网站级项目、数据访问级项目。在我的解决方案中,迁移应该发生在 DataAccess 级别的项目中。

当我在包管理器控制台中运行 Add-Migration 命令时,出现“无法加载指定的元数据资源”。

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

"metadata=res:// /ApplicationEntities.csdl|res:// /ApplicationEntities.ssdl|res://*/ApplicationEntities.msl;provider=System.Data.SqlClient;provider connection string="data source=.;initial目录=YourDatabaseName;集成安全=True;MultipleActiveResultSets=True;App=EntityFramework""

这对于代码首先是不正确的。

正确的连接字符串应该是:

“数据源=.;初始目录=YourDatabaseName;集成安全=True”

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

于 2016-03-17T05:13:50.127 回答
2

我也遇到了这个问题,这是因为我要从实体框架模型优先到实体框架代码优先,并且忘记将 EDMX 连接字符串更改为“常规”连接字符串。

于 2019-02-09T19:37:47.390 回答
1

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

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

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

在此处输入图像描述

于 2019-04-19T20:37:32.740 回答
1

我们从.net core 1升级到3.1,从Visual Studio 2015升级到Visual Studio 2019。我们注意到某些文件的构建操作已被重置。因此,我们将所有以 .tt 结尾的文件的Build ActionNone更改为Content ,并将它们的Copy to Output 目录更改为Do Not Copy
我们还必须将.edmx文件的构建操作更改为EntityDeploy并将其复制到输出目录值更改为Do Not Copy
某人。

于 2020-10-26T10:15:17.620 回答
0

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

于 2015-02-27T00:14:41.343 回答
0

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

于 2017-12-23T19:13:15.210 回答
0

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

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

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

于 2018-02-21T20:16:58.137 回答
0

我也遇到了这个问题,因为我entityFrameworkapp.config.

我有这个:

<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>
于 2019-05-02T18:55:48.053 回答
0

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

于 2020-08-14T15:14:21.263 回答
0

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

于 2020-12-30T21:40:39.120 回答
0

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

为我工作

于 2021-04-30T14:37:51.463 回答