2017-08-29 5 views
2

Est-ce que ServiceStack.OrmLite prend en charge le mappage d'héritage?Mappage d'héritage ServiceStack.OrmLite

Comme DevExpress XPO: Inheritance Mapping ou nHibernate Inheritance.

Par exemple (C#):

public abstract class EventBase 
{ 
    public string Name { get;set; } 
} 
public class NormalEvent: EventBase 
{ 
    public string A { get;set; } 
} 
public class SuperDuppaEvent:EventBase 
{ 
    public string B { get;set; } 
} 

Dans la base de données existe une table 'EventBase' avec toutes les colonnes/Propriétés de 'NormalEvent', 'SuperDuppaEvent' et de 'EventBase' aussi.

Dans la documentation existe le 'AliasAttribute' mais cela ne fonctionne pas.

Répondre

0

Non OrmLite ne prend pas en charge le mappage d'héritage. C'est une attente fondamentale dans OrmLite que chaque POCO mappe 1: 1 avec la table RDBMS qu'il représente. Donc, par défaut chacune de vos classes cartographiera à une table de SGBDR avec le même nom:

  • NormalEvent> Table NormalEvent
  • SuperDuppaEvent> Table SuperDuppaEvent

Si vous voulez un comportement différent, vous auriez besoin pour mapper les classes POCO 1: 1 avec la manière dont vous le souhaitez dans la base de données, par exemple:

class NormalEvent 
{ 
    public string A { get; set; } 
    public int EventBaseId { get; set; } 
}