0

Je ne comprends probablement pas l'héritage de table par hiérarchie du code-first, mais voici ma configuration: J'ai hérité de HTMLGadgets (et d'autres types) à partir de Gadget, qui hérite de Entité. L'entité a une propriété, Id, donc je peux l'utiliser dans un référentiel générique, à la this tutorial.Entity Framework Code Premier Héritage TPH avec référentiel générique

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;} 
} 

Pour mettre en œuvre l'héritage TPH J'ai dans mon contexte:

public DbSet<Gadget> Gadgets { get; set; } 

, je veux donc tout à utiliser l'identifiant de base, donc tout est une entité. Mais comment puis-je obtenir cela pour participer au premier héritage du code? Je peux voir le problème: si je change le contexte d'avoir

public DbSet<Entity> Entities{ get; set; } 

il pourrait fonctionner, mais j'aurais tout (il y aura plus de tables autres que des gadgets) dans une table de hiérarchie! Mais je ne vois pas comment je peux faire en sorte que mes classes EF POCO atteignent le niveau le plus bas sur les gadgets, mais les gadgets utilisent toujours la propriété Entity Id de base pour pouvoir être utilisés dans le référentiel générique. Quelqu'un peut-il aider? -

Répondre

0

Vous n'avez pas besoin de carte Entity classe. Présentation DbSet<Entity> mappe Entity classe. Si vous allez endurer différents types de gadgets dans une seule table, mappez le Gadget et d'autres sous-classes.

Les propriétés déclarées dans la classe Entity` seront utilisées par EF pour mapper les sous-classes.

Questions connexes