建议:CLR类型到EDM类型的映射是不明确的,因为多个CLR类型与EDM类型匹配

时间:2013-02-14 17:12:25

标签: c# entity-framework poco dbcontext edmx

我有一个包含100多个dables的数据库。我决定将EF模型分成三个不同的模型。有几个表出现在多个模型中。在使用EF 5.X DbContext Generator之后,我得到了POCO类。

此模板生成重复的类(出现在多个模型中的类)但具有不同的命名空间。在尝试查询其中一个之后,我收到以下错误:

The mapping of CLR type to EDM type is ambiguous because multiple CLR types match the EDM type

在面对这个问题后,我相信我有两个选择:

  1. 编辑CSDL,MSL,SSDL文件以重命名实体。在这种情况下,我会将上下文名称附加为实体的前缀。
  2. 编辑EF 5.x DbContext Generator以编辑将生成的POCO类的名称。在这种情况下,我还会将上下文名称作为POCO类的前缀附加。
  3. 我的问题如下:我应该遵循哪个选项?根据所选选项,我需要做什么。如果没有一个选项有效,你建议我做什么?

2 个答案:

答案 0 :(得分:1)

如果您编辑t4模板(选项2),所有课程都会受到影响。通过编辑类名(您可以在设计器表面中执行),您只能更改在更多上下文中常见的类。

因此,如果重叠的类很少,我会选择选项1.我在类似的情况下也这样做,其中一些表包含在多个上下文中(业务,授权,报告......),并且只有类具有其原始名称的上下文用于该类的CUD操作。此外,我不希望我的所有课程都有前缀。

答案 1 :(得分:-1)

我删除了 .edmx 文件并重新创建了它 这解决了这个问题。不确定这对你有帮助。