【问题标题】:Entity Framework 4.0 trouble matching conceptual model with CLR types?实体框架 4.0 无法将概念模型与 CLR 类型匹配?
【发布时间】:2011-09-11 08:47:22
【问题描述】:

我在我的应用程序中遇到了一个我无法解决的奇怪错误。错误如下。

The Member 'Company' in the conceptual model type 'EntityModel.FK_Users_Companies' is not present in the CLR type 'EntityModel.FK_Users_Companies'.

这对我来说很奇怪,当我用谷歌搜索时,我找不到任何关于这个确切错误的信息。

有什么解决方法的建议吗?

【问题讨论】:

  • 您是否对代码进行了重构?您是否更改了任何属性的名称而不在 EDMX 文件中更改它?
  • 是的,我将一些类移到另一个程序集/项目中。但没有对属性名称或数据库进行任何更改。我还删除了 .EDMX 并创建了一个具有相同错误的新文件。
  • 您必须准确描述您在问题中所做的事情,否则您无法期望得到任何有用的答案。我们没有看到您的项目。
  • 我搬了很多地方,删除了 2 个项目并合并了另外 2 个项目。将我的 MetadataType/部分类移动到一个新项目。变了很多。所以很难准确地描述我改变了什么。我的问题是这个错误意味着什么,它在哪里失败?
  • 那我们帮不了你。您的解决方案很明显 - 将实体移回一个项目。

标签: entity-framework-4 ado.net


【解决方案1】:

错误意味着您的类(CLR 类型)与您的 EDMX 模型(概念模型类型)不同步。最明显的原因是您的类已重构导航属性的名称,但您的 EDMX 没有。

【讨论】:

  • 谢谢,有什么简单的方法可以重新同步课程和 EDMX 模型吗?即使我删除 EDMX 文件并重新创建它,错误也不会消失。
  • 当您重新创建 EDMX 时,您是否还会重新创建所有实体类(= 删除旧的并让 EF 重新创建它们)?
  • 我删除了model.emdx文件,我猜model.Designer.cs也同时被删除了。是否还有其他文件需要删除?
  • 不应该没有任何其他文件需要删除。您确定您的应用程序中没有其他名为 Company 的类吗?
【解决方案2】:

所以这个错误现在解决了。

在我的解决方案中,我有一个项目 Data,其中存储了我的 EMDX 文件和一个 ASP.NET MVC 3 项目,以及其他一些项目。无论如何。解决这个问题的方法是将Data项目中App.Config中的ConnectionString复制到ASP.NET MVC 3项目中的Web.Config中。

我已经这样做了,但不知怎的,两个连接字符串之间出现了不匹配。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-05
    • 1970-01-01
    • 2019-06-28
    • 2015-04-15
    • 2011-04-01
    相关资源
    最近更新 更多