突然,在实例化生成的ObjectContext类时,我一直得到一个MetadataException。App.Config中的连接字符串看起来是正确的-自从上次它工作以来没有改变-我已经尝试从底层数据库中重新生成一个没有变化的新模型(edmx-file)。

有人有什么想法吗?

进一步的细节:我没有更改任何属性,没有更改任何输出程序集的名称,也没有尝试将EDMX嵌入到程序集中。我只是下班后等了10个小时才回来。然后它就不管用了。

我试过重新创造EDMX。我试着重新创建这个项目。我甚至尝试从头开始重新创建数据库。不管怎样,运气不好。


当前回答

我的问题和解决方案,症状是相同的“无法加载指定的元数据资源”,但根本原因不同。我在解决方案中有两个项目,一个是EntityModel,另一个是解决方案。实际上,我在EntityModel中删除并重新创建了EDMX文件。

解决方案是,我必须回到Web应用程序项目,并将这一行添加到配置文件中。新模型改变了一些必须在“其他”项目的Web中复制的项。配置文件。旧的结构不再适用了。

     <add name="MyEntities"
     connectionString="metadata=res://*/Model1.csdl|res://*/Model1.ssdl|res://*/Model1.msl;
                    provider=System.Data.SqlClient;
                    provider connection string=&quot;
                    data source=Q\DEV15;initial catalog=whatever;
                    user id=myuserid;password=mypassword;
                    multipleactiveresultsets=True;
                    application name=EntityFramework&quot;"
     providerName="System.Data.EntityClient" />

其他回答

一个小小的修改帮我解决了这个问题。

我有3个项目参考资料的解决方案:

connectionString="metadata=res://*/Model.Project.csdl|res://*/Model.Project.ssdl|res://*/Model.Project.msl;

我改为:

connectionString="metadata=res://*/;

这发生在我身上,当我不小心切换了edmx文件的构建动作(出现在IDE属性下)从“EntityDeploy”到“None”。EntityDeploy为您填充元数据:请参阅http://msdn.microsoft.com/en-us/library/cc982037.aspx

我从解决方案中的所有项目中删除了\bin和\obj文件夹,然后重新构建解决方案,它工作得很好

我也遇到了和Rick一样的问题和解决方案,只是我要将一个现有的.edmx导入到一个新项目中,虽然基本名称空间无关紧要,但它被导入到不同的子目录中,因此我还必须更新Web内部的连接字符串。配置在三个地方,包括不同的子目录命名:

我花了一整天在这个错误上

如果您正在使用n-tear架构

或者您尝试将EDMX生成的模型从DataAccessLayer分离到DomainModelLayer

也许你会得到这个错误

第一个故障排除步骤是确保webconfig (UILayer)和appconfig (DataAccessLayer)中的Connection字符串是相同的 第二个是非常重要的连接字符串 connectionString = "元数据= res: / / * / Model.csdl | res: / / * / Model.ssdl | res: / / * / Model.msl;提供… 这就是问题所在

从哪里我得到了Modelor。csdl在我的连接字符串中,他们在哪里

这是我们的解决方案,请看图

希望对你有所帮助