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

有人有什么想法吗?

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

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


当前回答

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

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

其他回答

我昨天遇到了这个问题,并在调试中查看了我的代码和SQL分析器的输出。

在我阅读和理解这篇文章之前,我不能理解的是,为什么EntityFramework在调用DB时抛出这个错误。我在SQL Profiler中查看了数百行,试图找出数据库模型的错误。我找不到我期待的那种电话,老实说,我也不确定我在找什么。

如果您处于此位置,请检查连接字符串。我的猜测是,在EntityFramework创建它的SQL之前,它会检查模型,在连接字符串的元数据部分指定。对我来说,这是错误的。EntityFramework甚至还没有到DB。

确保名字是正确的。一旦我得到了整理,我然后看到调用SQL Profiler的ApplicationName是'EntityFramework'与SQL调用预期的表。

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

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

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

也许你会得到这个错误

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

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

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

希望对你有所帮助

在我的情况下,这是因为我正在使用EntityConnectionStringBuilder构建连接字符串。确保您的元数据属性使用模型名称(包括名称空间)

我遇到了同样的错误消息的问题。我的问题通过关闭并重新打开Visual Studio 2010解决了。

如果您正在使用来自不同项目的edmx,那么在连接字符串中,更改…

metadata=res://*/Data.DataModel.csdl

……

metadata=res://*/DataModel.csdl