【发布时间】:2011-10-05 04:08:18
【问题描述】:
我可能误解了 code-first table-per-hierarchy 继承,但这是我的设置:我有 HTMLGadgets(和其他类型)继承自 Gadget,它继承自 Entity。实体有一个属性,Id,所以我可以在通用存储库中使用它,就像this tutorial。
public abstract class Entity {
[Key]
public int Id { get; set; }
}
public abstract class Gadget : Entity {
public string Content { get; set; }
}
public class HTMLGadget : Gadget
{
public string SomeProperty { get; set;}
}
为了实现 TPH 继承,我在我的上下文中有这个:
public DbSet<Gadget> Gadgets { get; set; }
所以,我希望一切都使用基本 ID,所以一切都是实体。但是我如何让它参与代码优先继承呢?我可以看到问题:如果我将上下文更改为有
public DbSet<Entity> Entities{ get; set; }
它可能会起作用,但我会在一个层次结构表中包含所有内容(除了小工具之外还会有更多表)!但是我看不到如何让我的 EF POCO 类在小工具中“自下而上”,但仍然让小工具使用基本实体 ID 属性,以便它们可以在通用存储库中使用。谁能帮忙?-
【问题讨论】:
标签: inheritance c#-4.0 repository ef-code-first single-table-inheritance