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

我的连接字符串如下:

 

我的代码如下:

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

我的集会:

 System.Engine 

有人有主意吗?

这些链接没有解决我的问题:
MetadataException:无法加载指定的元数据资源
entity framework无法加载指定的元数据资源
entity framework:无法加载指定的元数据资源
无法加载指定的元数据资源

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

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

  • 你正在使用ADO.NET实体数据模型(.edmx)或Devart实体模型 (.edml)?
  • 模型文件的Build Action属性的值
  • 模型的元数据工件处理属性的值
  • dotConnect for Oracle的内部版本号(x.xx.xxx)
  • Visual Studio的版本
  • 按照Pawel的建议检查资源是否嵌入到程序集中

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

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

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

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

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

最后,我发现我将WebSite级别项目设置为“Startup”项目,并将此触发器设置为exception。 似乎系统会首先自动检查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”部分。

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

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

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

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

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