2009-07-02 10 views
0

Wie kann ich die Eigenschaft einer Eigenschaft mit NHibernate festlegen lassen? HierSo legen Sie eine Eigenschaft einer Eigenschaft in NHibernate fest

ist ein Beispiel (nur ein Beispiel!)

public class Person 
{ 
    private FullName _subClassProperty = new FullName(); 

    public FullName Name 
    { 
     get { return _subClassProperty; } 
     set { return _subClassProperty; } 
    } 
} 

public class FullName 
{ 
    public virtual string FirstName { get; set; } 
    public virtual string LastName { get; set; } 
} 

Person zu einer Datenbanktabelle serialisiert wird, das wie folgt aussieht:

table Person { 
    FirstName varchar, 
    LastName varchar 
} 

Ich möchte eine Zuordnung schreiben Datei für die Person Klasse, so dass NHibernate auf die FirstName und LastName Eigenschaften der FullName Eigenschaft der Person zugreifen, wenn serializi ng/Deserialisieren einer Person. I nicht möchte NHibernate die FullName-Klasse instanziieren - die Klasse Person sollte immer noch für die Instanziierung der FullName-Klasse verantwortlich sein.

Ich vermute, dies ist möglich mit einem IPropertyAccessor, aber ich kann nicht viel Dokumentation finden, wie dies zu erreichen ist. Könnte jemand einem NHibernate-Neuling helfen?

Antwort

2

Das sieht für mich wie ein klassischer Anwendungsfall für eine NHibernate-Komponente aus. Wenn Sie sich die Abbildung von XML verwenden, etwa so:

<component name="FullName" class="YourNamespace.FullName, YourAssembly"> 
    <property name="FirstName" type="String" /> 
    <property name="LastName" type="String" /> 
</component> 

Wenn Sie mit Fluent:

Component(p => p.FullName, m => 
{ 
    m.Map(p => p.FirstName); 
    m.Map(p => p.LastName); 
}); 
+0

Ah ok cool, ich werde versuchen, dass. Von den wenigen Dokumenten, die ich gelesen habe, dachte ich, dass Komponenten für mein Szenario verwendet wurden, aber rückwärts - wo Sie zwei Tabellen haben, die Sie einer Klasse zuordnen möchten. – cbp

Verwandte Themen