0

首先在实体框架代码中定义一些 POCO 对象(实体)时遇到问题 4. 我有一个主实体,比如说 Entity_A,它只有一个属性,只有 ID(主键)。其余实体(本例中的 Entity_B)继承自它(子实体),但其中一些实体 (Entity_C) 继承自另一个实体(来自 Entity_B,而不是来自 Entity_A)。例如:

public class Entity_A
{
  public virtual Guid ID { get; set; }
}

// Entity_B has not primary key defined within as it inherits from Entity_A
public class Entity_B : Entity_A
{
  public virtual string propertyB1 { get; set; }
  public virtual string propertyB2 { get; set; }
  public virtual string propertyB3 { get; set; }
}

// Entity_C has not primary key defined within as it inherits from Entity_A through Entity_B
public class Entity_C : Entity_B
{
  public virtual string propertyC1 { get; set; }
  public virtual string propertyC2 { get; set; }
  public virtual string propertyC3 { get; set; }
}

所以在执行之后,Entity_A、Entity_B、Entity_C 的表会自动生成,但只有 Entity_A 和 Entity_B 的表是正确的,而 Entity_C 的表则不正确:

表 Entity_A 具有字段:
-ID

哪个是对的。

表 Entity_B 具有以下字段:
-ID
-propertyB1
-propertyB2
-propertyB3

这也是正确的。

表 Entity_C 具有以下字段:
-ID
-propertyC1
-propertyC2
-propertyC3

这对我来说是不正确的,至于 Entity_C 我期望以下字段:
-ID
-propertyB1
-propertyB2
-propertyB3
-propertyC1
-propertyC2
-propertyC3

我究竟做错了什么?实体框架代码优先(4.1版)根本不支持继承吗?

提前致谢。

4

1 回答 1

1

尝试向 Entity_C 添加一条记录,您会注意到向 Entity_B 和 Entity_A 也添加了一条记录。

这是表继承。Entity_C 是 Entity_B,那么为什么要复制行呢?

于 2013-05-08T00:55:20.863 回答