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

有人有什么想法吗?

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

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


当前回答

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

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

……

metadata=res://*/DataModel.csdl

其他回答

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

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

我也有同样的问题。我用反射器查看了我的编译dll,发现资源的名称是不正确的。我重新命名了,现在看起来很好。

在将项目升级到。net 6时,我也收到了这个错误,以前的解决方案都没有解决我的问题。

你可能想检查你的。edmx文件是否有以下两个属性设置如下:

构建动作:EntityDeploy 复制到输出目录:始终复制

最终,我的问题是我的.edmx文件中引用的文件没有生成。

我也有这个问题,这是因为我的网络中的连接字符串。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。解决了配置和问题。:)