我可能误解了code-first table-per-hierarchy继承,但这是我的设置:我让HTMLGadgets (和其他类型)继承自Gadget,而Gadget继承自Entity。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类在Gadgets上“自下而上”,而Gadget仍然使用基本实体Id属性,以便它们可以在通用存储库中使用。有人能帮上忙吗?-
发布于 2011-10-05 12:24:24
您不必映射Entity类。引入DbSet<Entity>将映射Entity类。如果您打算在单个表中存储不同类型的Gadget,则映射Gadget和其他子类。
EF将使用Entity`类中声明的属性来映射子类。
https://stackoverflow.com/questions/7656629
复制相似问题