首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用泛型存储库的实体框架代码优先TPH继承

使用泛型存储库的实体框架代码优先TPH继承
EN

Stack Overflow用户
提问于 2011-10-05 12:08:18
回答 1查看 1K关注 0票数 0

我可能误解了code-first table-per-hierarchy继承,但这是我的设置:我让HTMLGadgets (和其他类型)继承自Gadget,而Gadget继承自Entity。Entity有一个属性Id,所以我可以在一个通用的存储库中使用它,就像this tutorial一样。

代码语言:javascript
复制
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继承,我在我的上下文中使用了以下内容:

代码语言:javascript
复制
public DbSet<Gadget> Gadgets { get; set; }

因此,我希望所有内容都使用基ID,因此所有内容都是一个实体。但是我如何让它参与代码优先继承呢?我可以看到问题:如果我将上下文更改为具有

代码语言:javascript
复制
public DbSet<Entity> Entities{ get; set; }

它可能会起作用,但我会在一个层次结构表中包含所有内容(将会有更多的表,而不是小工具)!但我不明白如何让我的EF POCO类在Gadgets上“自下而上”,而Gadget仍然使用基本实体Id属性,以便它们可以在通用存储库中使用。有人能帮上忙吗?-

EN

回答 1

Stack Overflow用户

发布于 2011-10-05 12:24:24

您不必映射Entity类。引入DbSet<Entity>将映射Entity类。如果您打算在单个表中存储不同类型的Gadget,则映射Gadget和其他子类。

EF将使用Entity`类中声明的属性来映射子类。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7656629

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档