0

我可能會誤解代碼優先的表每級繼承,但這是我的設置:我有從小工具繼承的HTMLGadgets(和其他類型),繼承自實體。實體具有一個屬性Id,因此我可以在通用存儲庫中使用它,即la this tutorial實體框架代碼首先TPH繼承與通用存儲庫

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中「自下而上」,但仍然有Gadgets使用基本的Entity Id屬性,以便它們可以在通用存儲庫中使用。任何人都可以幫忙嗎? -

回答

0

你不必去映射Entity類。引入DbSet<Entity>將映射Entity類。如果您打算在單個表中疼痛不同類型的小工具,請映射Gadget和其他子類。

實體類中聲明的屬性將被EF用來映射子類。