gpt4 book ai didi

entity-framework - 使用 Entity Framework 实体连接时出现 MetadataException

转载 作者:行者123 更新时间:2023-12-03 05:31:33 25 4
gpt4 key购买 nike

这段代码:

using (EntityConnection conn = new EntityConnection("name=ELSCommonEntities"))
{
conn.Open();
}

给我以下错误:

Test method ELS.Service.Business.IntegrationTest.Base.ServiceBaseIntegrationTest.StartLoggingTestMethod threw exception:  System.Data.MetadataException: Unable to load the specified metadata resource..

具有以下堆栈跟踪:

System.Data.Metadata.Edm.MetadataArtifactLoaderCompositeResource.LoadResources(String assemblyName, String resourceName, ICollection`1 uriRegistry, MetadataArtifactAssemblyResolver resolver)
System.Data.Metadata.Edm.MetadataArtifactLoaderCompositeResource.CreateResourceLoader(String path, ExtensionCheck extensionCheck, String validExtension, ICollection`1 uriRegistry, MetadataArtifactAssemblyResolver resolver)
System.Data.Metadata.Edm.MetadataArtifactLoader.Create(String path, ExtensionCheck extensionCheck, String validExtension, ICollection`1 uriRegistry, MetadataArtifactAssemblyResolver resolver)
System.Data.EntityClient.EntityConnection.SplitPaths(String paths)
System.Data.EntityClient.EntityConnection.GetMetadataWorkspace(Boolean initializeAllCollections)
System.Data.EntityClient.EntityConnection.InitializeMetadata(DbConnection newConnection, DbConnection originalConnection, Boolean closeOriginalConnectionOnFailure)
System.Data.EntityClient.EntityConnection.Open()
ELS.Service.Business.Base.ServiceBase.StartLogging(String userWindowsLogon) in C:\C-TOM\ELS-RELEASE1\ELS.Service.Business\Base\ServiceBase.cs: line 98
ELS.Service.Business.IntegrationTest.Base.ServiceBaseIntegrationTest.StartLoggingTestMethod() in C:\C-TOM\ELS-RELEASE1\ELS.Service.Business.IntegrationTest\Base\ServiceBaseIntegrationTest.cs: line 65

但是,此代码使用相同的连接字符串:

using (ELSCommonEntities db = new ELSCommonEntities())
{
var res = from c in db.Logging
select c;

int i = res.Count();
}

不报错。

连接字符串是:

<add name="ELSCommonEntities" connectionString="metadata=res://*/Common.CommonModel.csdl|res://*/Common.CommonModel.ssdl|res://*/Common.CommonModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=localhost;Initial Catalog=els5_demo;Integrated Security=True;MultipleActiveResultSets=True&quot;" providerName="System.Data.EntityClient" />

我还在 Reflector 中打开了 dll,元数据看起来没问题。

最佳答案

发现问题了。

标准元数据字符串如下所示:

metadata=res://*/Model.csdl|res://*/Model.ssdl|res://*/Model.msl

这在大多数情况下都可以正常工作。但是,在某些(包括我的) Entity Framework 中,我们会感到困惑,不知道要查找哪个 dll。因此,将元数据字符串更改为:

metadata=res://nameOfDll/Model.csdl|res://nameOfDll/Model.ssdl|res://nameOfDll/Model.msl

它会起作用的。正是这个链​​接让我走上了正轨:

http://itstu.blogspot.com/2008/07/to-load-specified-metadata-resource.html

虽然我遇到了相反的问题,但没有在单元测试中工作,而是在服务中工作。

关于entity-framework - 使用 Entity Framework 实体连接时出现 MetadataException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1074337/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com