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

有人有什么想法吗?

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

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


当前回答

导致此异常的另一个原因是在ObjectQuery中包含了相关表,但输入了错误的导航属性名。

例子:

var query = (from x in myDbObjectContext.Table1.Include("FKTableSpelledWrong") select x);

其他回答

我能够在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的XML结构中的语法错误也是原因。我发现在VS无法显示图表之后,我打开了XML编辑器。

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

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

我在2019年9月27日也遇到了同样的问题。

我的API是在Dot net核心目标。net框架。 Edmx在一个不同的类库中,它只存在于。net框架中。

我观察到,当我试图从API调用那个edmx ..由于某种原因,我得到了这个错误。

我所做的是,到API的obj文件夹删除所有东西。 然后清理API项目并再次尝试,这对我来说是有效的。

有时我在我的项目中看到这个错误。我通过

1 -右键单击EDMX文件

2 -选择“运行自定义工具”选项

3 -重建项目