2

我有一个包含 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 生成器以编辑将生成的 POCO 类的名称。在这种情况下,我还将上下文名称作为前缀附加到 POCO 类。

我的问题如下:我应该遵循哪个选项?以及根据选择的选项我需要做什么。如果没有一个选项是有效的,你建议我做什么?

4

2 回答 2

1

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

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

于 2013-02-14T23:01:10.400 回答
-2

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

于 2013-06-11T17:42:34.097 回答