我的连接字符串如下:
<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="User Id=user;Password=password;Server=127.0.0.1;Direct=True;Sid=ORCL"" 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
请参阅http://forums.devart.com/viewtopic.php?t=22092。
如果这没有帮助,请说明:
我也遇到了这个问题,因为我是app.config中缺少的Entity Framework配置部分。
我有这个:
<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>
我得到了这样的例外。问题是我重命名了我的.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”项目,并将此触发器置于异常之上。似乎系统会首先自动检查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等。
我也遇到了这个问题,因为我从实体框架模型优先到实体框架代码优先,并且忘记将EDMX连接字符串更改为“常规”连接字符串。