一个实体用于多个类似的表

时间:2010-08-08 02:38:03

标签: entity-framework

在数据库中有两个表。

它们具有完全相同的列,只有它们之间的区别 - 它们具有不同的名称。

假设我有TableSea的列s Id,Name和TableOcean,列ID和名称相同。

我想使用EF 4进行CRUD操作,我也想使用存储过程映射进行插入更新和删除操作。

我已经为第一个表创建了POCO实体,我确实创建了存储过程并将它们映射到实体模型。一切顺利。

如何在没有为第二个表创建新实体的情况下使其与两个表一起使用?

1 个答案:

答案 0 :(得分:0)

AFAIK,你不能,你绝对不应该!

如果您有两个相同的数据库表,则表示以下之一:

  1. 两张桌子密切相关 相关概念(如 Sea Ocean 在你的例子中)。
  2. 两张桌子 只镜像不同的概念 不小心有同样的 属性。
  3. 根据哪种情况更接近现实,您有以下两种设计选择:

    1. 合并两个表并添加一个 Type属性(列),然后是map 它属于一种实体类型。你可能会 有不同的子类 区分不同的类型,或者你 可以额外增加Type 财产 - 适合哪个更适合 你。
    2. 有两张桌子。这意味着:有两个不同的概念。因此,这必须由业务模型中的两个不同实体进行镜像。
    3. 在任何情况下,在数据库中拥有实体表意味着在业务模型中具有实体类。如果没有这样的1:1 - 映射,那么设计显然有问题!

      托马斯