EF4错误:无法加载指定的元数据资源

时间:2010-10-26 09:00:35

标签: asp.net asp.net-mvc-2 entity-framework-4

我刚刚使用EF 4部署了我的ASP.NET MVC 2应用程序,我收到以下错误:

Unable to load the specified metadata resource.

在我的本地计算机上运行良好且没有错误。现在,当我部署到服务器时,此错误才出现。我在MyProject.EntityModel中有我的enity数据模型文件。我使用POCO实体生成器来分隔我的上下文和实体。这两个项目位于另一个名为MyProject.Entities的项目中。我在2个项目中的app.config中的连接字符串完全相同。我的MVC应用程序中的web.config中的连接字符串也是相同的。我不确定为什么这会给我带来问题?我也在IIS(Windows 7附带)中运行应用程序,它运行正常。服务器上的IIS版本是6(我认为)。以下是完整的错误消息:

InnerException
Message: Unable to load the specified metadata resource.
Source: System.Data.Entity
StackTrace: at System.Data.Metadata.Edm.MetadataArtifactLoaderCompositeResource.LoadResources(String assemblyName, String resourceName, ICollection`1 uriRegistry, MetadataArtifactAssemblyResolver resolver)
at System.Data.Metadata.Edm.MetadataArtifactLoaderCompositeResource.CreateResourceLoader(String path, ExtensionCheck extensionCheck, String validExtension, ICollection`1 uriRegistry, MetadataArtifactAssemblyResolver resolver)
at System.Data.Metadata.Edm.MetadataArtifactLoader.Create(String path, ExtensionCheck extensionCheck, String validExtension, ICollection`1 uriRegistry, MetadataArtifactAssemblyResolver resolver)
at System.Data.Metadata.Edm.MetadataCache.SplitPaths(String paths)
at System.Data.Common.Utils.Memoizer`2.<>c__DisplayClass2.<Evaluate>b__0()
at System.Data.Common.Utils.Memoizer`2.Result.GetValue()
at System.Data.Common.Utils.Memoizer`2.Evaluate(TArg arg)
at System.Data.EntityClient.EntityConnection.GetMetadataWorkspace(Boolean initializeAllCollections)
at System.Data.Objects.ObjectContext.RetrieveMetadataWorkspaceFromConnection()
at System.Data.Objects.ObjectContext..ctor(EntityConnection connection, Boolean isConnectionConstructor)
at MyProject.HolsboerBFGA.Entities.HolsboerBFGAEntities..ctor()
at MyProject.HolsboerBFGA.WebMVC2.Controllers.HomeController..ctor()

任何建议都将受到赞赏。

感谢。

2 个答案:

答案 0 :(得分:1)

我找到了解决方案,因为我遇到了同样的问题。我有这个问题,因为我的.edmx移动到另一个文件夹,我不得不更改命名空间,所以当我运行我的项目时出现此错误。

我通过更改连接字符串解决了我的问题,将名称空间“Model”(文件夹名称)添加到文件夹更改的3个位置。

    <add name="connectionName" connectionString="metadata=res://*/Model.MyModel.csdl|res://*/Model.MyModel.ssdl|res://*/Model.MyModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=server;initial catalog=myDataBase;user id=us;password=***;multipleactiveresultsets=True;application name=EntityFramework&quot;" providerName="System.Data.EntityClient" />

答案 1 :(得分:0)

看看this question,问题似乎是一样的。