【问题标题】:"ambiguous" mapping from CLR to EDM从 CLR 到 EDM 的“模糊”映射
【发布时间】:2012-12-24 21:01:25
【问题描述】:

我知道,当您在不同的命名空间中有两个具有相同名称的类时,Code First 曾经有一个问题(或者可能仍然存在)。我发现了很多关于这个的帖子。我有一点……不同的东西?

好吧,尽管他们“修复”了它,但还是让它变得更糟。我没有两个同名的班级,我只有一个班级。我向你保证,你没有看到双重。下面出现的类名一模一样,没有其他类名。

CLR 类型到 EDM 类型的映射不明确,因为多个 CLR 类型与 EDM 类型“类名”匹配。之前找到的CLR类型'App.Domain.Classname',新找到的CLR类型'App.Domain.Classname'。

当我尝试使用“具有读/写操作和视图的 MVC 控制器,使用实体框架”模板创建新控制器时,我多次收到此错误(针对不同的类名)。

【问题讨论】:

  • 在错误消息中,两种类型似乎具有相同的名称:“App.Domain.Classname”。您是否碰巧引用了同一程序集的两个版本,因此所有/大多数类型都是重复的?请注意,即使 EF 在加载 POCO 实体时使用命名空间来区分类型,它也无济于事,因为在您的情况下,完整的类型名称是相同的。
  • 是的。这就是我问题的重点。我没有两个版本。我的“解决方案”?放弃并重新开始一个新项目/新数据库。根据我的记录,我花了一天半(12 小时)的时间来解决这个“节省时间”的问题(我认为这意味着“我们在发布它之前根本没有测试它,从而节省了大量时间” ) 代码优先系统。
  • 您没有提供任何复制品,因此很难弄清楚您最终是如何出现重复的 - 异常消息显示您有重复项,而重新开始后您没有重复项。这可能意味着您的项目中有某些东西导致了异常。例如,我想知道如果您尝试使用 CodeFirst 但同时在您的项目中有一个 edmx 文件,是什么导致从您的 edmx 文件生成重复实体。此外,对您不知道的测试工作进行粗鲁和评论是非常不专业的,尤其是当有人试图帮助您时。
  • @Pawel 我遇到了同样的问题,可以提供一个重现 - 我刚刚开始学习 PluralSight MVC4 课程。我制作的所有四个 POCO 课程都表现出同样的问题,我不知道为什么。项目在这里 - dropbox.com/s/wxb9wuf664pjyoy/TheaterTools.7z
  • 你能显示完整的堆栈跟踪和确切的异常消息吗?我想看看我应该从哪一行代码开始以及导致问题的类型。

标签: asp.net-mvc-4 visual-studio-2012 entity-framework-4.3


【解决方案1】:

如果您在同一模块中有多个 edmx 文件,则会出现此问题。即使在那些 edmx 中,它也可能存在相同类型的两个实体。这是 ef4 的框架问题。但它可以通过手动更改实体名称来解决。这是由 edmx 创建的。或者简单地在任何一个实体中添加一个转储列。在第一种方式中,我们应该对所有实体类以及引用实体类进行更多更改。

【讨论】:

    猜你喜欢
    • 2014-07-31
    • 1970-01-01
    • 2015-01-15
    • 1970-01-01
    • 2012-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-16
    相关资源
    最近更新 更多