2009-06-02 3 views
0

Ich habe mehrere Fragen im Zusammenhang mit der korrekten Zuordnung eines Aufzählungstyps mit NHibernate gesehen.Wie wird Enum in NHibernate zugeordnet, um ein DB-Feld beim Schema-Export ordnungsgemäß zu erstellen?

This article von Jeff Palermo zeigte mir, wie man das richtig macht, indem man einen benutzerdefinierten Typ erstellt. Ich verwende Schema Export, um meine Datenbank während meiner Entwicklungszyklen zu erstellen, aber diese Methode bricht meine Exportanweisung. Gibt es eine Möglichkeit, den Typ der Spalte beim Export anzugeben?

Hier ist meine Enum-Code:

public enum OperatorCode 
{ 
    CodeA, 
    CodeB, 
    CodeC, 
    CodeD 
} 

Hier ist meine individuelle Art:

public class OperatorCodeType:EnumStringType 
{ 
    public OperatorCodeType():base(typeof(OperatorCode),20) 
    { 

    } 
} 

Hier ist mein Eigentum in meiner Mapping-Datei:

<property name="OperatorCode" column="OperatorCode" type="OperatorCodeType" /> 

Und hier endlich ist Meine Klassendeklaration für diese Eigenschaft:

public virtual OperatorCode OperatorCode { get; set; } 

Ist das überhaupt möglich?

Antwort

1

Ich habe es nicht getestet, aber Sie können die Column-Deklaration innerhalb einer Eigenschaft verwenden, um den SQL-Typ anzugeben. Beispiel aus der Dokumentation:

<property name="Foo" type="String"> 
    <column name="foo" length="64" not-null="true" sql-type="text"/> 
</property> 

Zugegeben dies ein String ist, aber man kann es versuchen will mit der Art der OperatorCodeType, Spalte SQL-Typ als Text oder nvarchar oder was auch immer funktioniert.

Wenn Sie es versuchen, lassen Sie es mich wissen? Nicht in der Nähe meiner Dev-Maschine im Moment.

+0

Tschad, Dies funktionierte wie ein Charme. Ich habe noch nie ein Eigenschaftselement mit einem Spaltenknoten getrennt, aber ich dachte, es müsste eine Möglichkeit geben, dies in den .hbm-Dateien zu tun, da ich gesehen habe, dass Fluent NHibernate dies über Code ermöglicht. Die Spaltendeklaration gibt feinere Kontrolle. Danke vielmals! –

+0

Kein Problem, froh, dass ich helfen konnte. –

Verwandte Themen