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

有人有什么想法吗?

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

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


当前回答

和一个快速的方法来检查模型名称没有Reflector....查找目录

...obj - {} - edmxResourcesToEmbed输出配置

检查.csdl、.msl和.ssdl资源文件是否存在。如果它们在子目录中,则子目录的名称必须加在模型名称之前。

例如,我的三个资源文件在一个子目录Data中,所以我的连接字符串必须是

元= res: / / * Data.MyModel.csdl | res: / * / Data.MyModel.ssdl | res: / * / Data.MyModel.msl;

(与元= res: / / * / MyModel csdl | res: / / * / MyModel ssdl | res: / / * / MyModel msl;)。

其他回答

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

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

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

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

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

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

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

我也有这个问题,这是因为我的网络中的连接字符串。config与我的EDMX所在程序集的app.config中的略有不同。不知道为什么会改变,但这里有两个不同的版本。

App.config:

<add name="SCMSEntities" connectionString="metadata=res://*/Model.SMCSModel.csdl|res://*/Model.SMCSModel.ssdl|res://*/Model.SMCSModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=SANDIEGO\sql2008;initial catalog=SCMS;integrated security=True;multipleactiveresultsets=True;application name=EntityFramework&quot;" providerName="System.Data.EntityClient" />

. config:

<add name="SCMSEntities" connectionString="metadata=res://*/Model.SCMSModel.csdl|res://*/Model.SCMSModel.ssdl|res://*/Model.SCMSModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=SANDIEGO\sql2008;initial catalog=SCMS;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" />

修复它只是简单地复制App .config字符串(注意结尾的小差异-而不是“App=EntityFramework”,它想要“应用程序名称=EntityFramework”)到web。解决了配置和问题。:)

异常是因为编译器指向不存在的元数据,所以只是复制app.config连接字符串到Web。配置ConnectionString