2009-04-30 6 views
0

In this question wurde ich hot beantwortet, um eine zusammengesetzte Entität aus dem Primärschlüssel der Tabelle zuordnen. So gegeben:Fluent Nhibernate zusammengesetzte Entität, geben Sie übergeordnete Schlüssel

public UserMap() 
{ 
    WithTable("aspnet_Users"); 
    Id(x => x.Id, "UserId") 
     .GeneratedBy.Guid(); 
    Map(x => x.Name, "UserName"); 
    Map(x => x.Login, "LoweredUserName"); 
    WithTable("LdapUsers", m => { 
      m.Map(x => x.FullName, "FullName"); 
      m.WithKeyColumn("UserId"); 
    }); 
} 

everithing funktioniert, wenn in dem "ldapuser" und in dem "aspnet_Users" gibt es eine Spalte mit dem Namen "Benutzer-ID".

Was Wenn ich sowohl den Spaltennamen für die Fremdschlüsseltabelle als auch den Spaltennamen für den Schlüssel aus der Haupttabelle angeben möchte, da dies nicht der PK ist, also eine andere Spalte für die Verknüpfung verwenden?

Antwort

0

Es sieht so aus, als ob dies in NHibernate derzeit überhaupt nicht unterstützt wird. Es gibt eine dafür auf NHibernate JIRA. Eigentlich denke ich, dass dies für Sammlungen gilt, aber wahrscheinlich auch für das, was du tust. Die Idee ist, dass Sie auf Ihrem <key>-Element ein property-ref-Attribut hinzufügen, das auf die Eigenschaft verweist, die Sie anstelle des Primärschlüssels verweisen möchten.

Angeblich ist die Änderung bereits in der Alpha2-Version von NHibernate 2.1.0 verfügbar. Natürlich könnte es einige Zeit nach NH2.1 eine allgemeine Veröffentlichung geben, bevor diese zu FNH hinzugefügt wird. Wenn Sie können, würde ich empfehlen, die Alpha2-Version in die Hand zu nehmen und es mit Ihrer Situation zu versuchen. Wenn es nicht für Ihre zusammengesetzte Entity, nur für Collections, funktioniert, möchten Sie möglicherweise ein anderes Problem auf JIRA senden, damit es ebenfalls hinzugefügt wird.