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

有人有什么想法吗?

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

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


当前回答

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

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

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

我改为:

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

其他回答

我能够在Visual Studio 2010, VB.net (ASP.NET) 4.0中解决这个问题。

在实体模型向导期间,您将能够看到实体连接字符串。从这里,您可以复制并粘贴到连接字符串中。

我唯一缺少的是连接字符串中的“App_Code.”。

entityBuilder.Metadata = "res://*/App_Code.Model.csdl|res://*/App_Code.Model.ssdl|res://*/App_Code.Model.msl"

对于我的案例,它是通过改变edmx文件的属性来解决的。

打开edmx文件 右键单击EDMX设计器的任意位置 选择属性 将名为“元数据工件处理”的属性更新为“嵌入输出程序集”

这为我解决了问题。 问题是,当容器试图找到元数据时,它找不到它。所以只要在同一个装配中就可以了。 如果您的edmx文件在另一个程序集中,则此解决方案将不起作用

在我的案例中,EDMX的XML结构中的语法错误也是原因。我发现在VS无法显示图表之后,我打开了XML编辑器。

之前的合并是导致语法错误的根本原因。

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

当我在构建新的.edmx设计器之前没有清理解决方案时,就会发生这种情况。因此,在构建新的。edmx设计器之前,不要忘记清理解决方案。这可以帮助我跳过很多问题。如果你是visual studio的新手,那么下面提供的导航细节。

点击- > Build >清洁解决方案 单击“->Build->Rebuild Solution”

希望这能有所帮助。谢谢大家