2017-07-28 3 views
2

Also schreibe ich eine wiederverwendbare Bibliothek. Und Nhibernate-Mapping nach Code wird für ORM-Operationen verwendet. Es wird mehrere Dienste geben, die diese Bibliothek verwenden, so dass die Bibliothek sich so dynamisch wie möglich verhalten soll.Nhibernate: Mehrere Klassenmaps für eine Entityklasse

Es wird mehrere Dienste geben und für jeden Dienst werden bestimmte Tabellen in der Datenbank gefunden, denen der Name ihres Dienstes vorangestellt ist. Unity wird dieses Präfix einfügen und alles funktioniert gut und schön, wenn nur ein Dienst verwendet wird.

Aber jetzt bin ich an dem Punkt, wo ich einen Dienst schreiben muss, der aus mehreren Diensten lesen und kombinieren wird. Also muss dieses libdummy-Objekt mehrfach mit verschiedenen Tabellenpräfixen gemappt werden.

public class LibDummy 
{ 
    public virtual int Id { get; set; } 
    public virtual string Guid { get; set; } 
} 

public class LibDummyMapping : ClassMapping<LibDummy> 
{ 
    public LibDummyMapping(ServiceName service) 
    { 
     Table($"{service.Name}_LibDummy"); 

     Id(o => o.Id, m => m.Column("Id")); 
     Property(o => o.Guid, m => m.Column("Guid")); 
    } 
} 

Ich habe versucht, es so zu tun:

public class FirstLibDummyMapping : LibDummyMapping 
{ 
    public FirstLibDummyMapping (ServiceName service) : base(service) 
    { 
    } 
} 

public class SecondLibDummyMapping : LibDummyMapping 
{ 
    public SecondLibDummyMapping (ServiceName service) : base(service) 
    { 
    } 
} 

Aber das wird eine "Duplicate Klasse/Entitätszuordnung" Fehler werfen. Und mit 2 verschiedenen Klassenmaps für die gleiche Entität wird es einen Auflistung bereits zugeordneten Fehler werfen.

Idealerweise hätte ich eine dynamische Classmap, die nur nativ in der Bibliothek verwendet werden kann, aber das ist keine Option, denke ich ??

Irgendwelche Ideen dafür, oder ist das etwas, das einfach nicht funktioniert?

Antwort

0

Jeder NHibernate Guru mit einer endgültigen Antwort?

Verwandte Themen