首页 文章

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

提问于
浏览
21

我的连接字符串如下:

<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

8 回答

  • 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的建议检查资源是否嵌入到程序集中

  • 57

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

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

    解决这个问题的最简单的解决方案是 remove the obj folder 与bin文件夹和 re-run the application 处于同一级别,我的上帝花了比它需要的更长的时间

  • 5

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

    当我在程序包管理器控制台中运行Add-Migration命令时,引发了“无法加载指定的元数据资源” .

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

    “metadata = 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"”

    这首先对代码不正确 .

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

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

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

  • 0

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

  • 0

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

  • 2

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

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

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

  • 0

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

相关问题