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

有人有什么想法吗?

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

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


当前回答

当我的emdx文件被一个预构建命令删除时,我得到了这个错误,很简单。我花了一段时间才意识到事情这么简单。

其他回答

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

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

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

我改为:

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

有同样的问题,因为我重命名了一个程序集。

我还必须在项目属性/AssemblyInfo.cs中的AssemblyTitle和AssemblyProduct属性中重命名它,并删除并重新添加对edmx文件的引用。

然后它运行得很好。

有同样的问题,我从数据库重新创建了edmx。 解决了我的问题。

我的理论是,如果您有多个同名的edmx文件(例如Model1),它将给出该异常。 当我决定将所有edmx文件(位于不同的项目中)命名为Model1时,我也遇到了同样的问题,因为我认为它们应该是独立的。

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