在运行时创建了不同的EDMX模型

问题描述 投票:0回答:1

我有一个第三方项目(例如DataProject),其中定义了EF数据上下文,并且其中还包含EDMX文件。我也有自己的项目(例如MyProject),它引用了DataProject,因此我可以使用它的数据上下文。

当我在解决方案中直接将MyProject引用到DataProject时,一切运行良好。 MyProject / bin / Debug / EDMX中的EDMX文件与DataProject / EDMX /中的EDMX文件完全相同。

但是我需要MyProject才能将DataProject用作NuGet包。因此,我将其添加为NuGet参考,并且在添加它时,我注意到EDMX文件夹出现在MyProject主文件夹下。该文件夹中的EDMX文件与DataProject / EDMX中的相同。到目前为止,一切都很好。

但是当我build并运行MyProject时,它使用与上述版本不同的文件创建MyProject / bin / Debug / EDMX,并且由于“当前模型不存在,我无法运行datacontext不再与用于预先生成映射视图的模型匹配...“错误。我不确定为什么会发生这种情况-是上下文和EDMX文件不匹配还是其他原因。我只知道,如果我在解决方案中直接将MyProject引用到DataProject,则一切正常。

  1. 当我以NuGet包引用DataProject时,为什么MyProject创建不同的EDMX文件?为什么直接引用DataProject时会创建相同的文件?
  2. 是否可以忽略上述错误?
  3. 是否有一种方法可以强制EF上下文使用特定的EDMX文件?
  4. 我应该在哪里检查任何设置的文件/配置吗?
  5. 还有其他建议吗?

我知道这个问题很普遍,但是希望我对前进的方向有所帮助。

.net entity-framework edmx
1个回答
0
投票

确定,找到原因了。为该架构生成的Edmx文件已过期,但与数据库架构相对应。当我直接引用DataProject时,EDMX文件按原样复制到/ bin / Debug / Edmx中,因为它们分别设置为“内容”,“如果更新则复制”。当我通过NuGet引用DataProject时,MyProject / Edmx中的文件会自动设置为“ Emtityeploy”,“ DoNotCopy”-因此它们永远不会复制到/ bin / Debug,而是在构建时生成新的Edmx文件。这些Edmx文件与EF模型匹配,但对于与原始Edmx文件匹配的数据库来说太新了。

© www.soinside.com 2019 - 2024. All rights reserved.