2009-08-13 2 views
0

Ist es möglich, den Standardwert einer Eigenschaft in NHibernate festzulegen? Hier ist das Szenario:NHibernate Set-Eigenschaft Standardwert

Ich habe eine Self-Join-Tabelle Category. Die Klasse und Tabellenstruktur sind wie folgt:

Category 
int Id 
string Name 
Category ParentCategory 

Category 
int Id not null 
varchar Name not null 
int ParentCategoryId not null 

Wenn eine Kategorie keine Eltern hat, muss die ParentCategoryId 0.

sein Wie kann ich das tun? TIA.

Antwort

0

Wenn nHibernate diese Beziehung erzwingt, glaube ich nicht, dass Sie eine ungültige Beziehung bilden können. Ich würde einen Dummy-Eltern-Datensatz 0 in der Datenbank erstellen und einfach alles zuweisen.

+0

Dank Spencer für die Idee, jedoch können wir nicht tun, da wir nur zu einer bestehenden Anwendung zu integrieren. –

0

Wenn die ParentCategoryId durch einen Fremdschlüssel nicht eingeschränkt ist, dann können Sie in Ihrem Code haben ... so etwas wie:

class Category{ 
    .... 

    public static Category NoParent{ 
    get{ return new Category{Id = 0}; } 
    } 


    .... 
} 

und nun stattdessen auf null zu setzen, legen Sie es nur auf NoParent. Oder, wenn im Wert von ParentCategory der Wert null ist, setze es auf NoParent.

Dies ist im Grunde Spencer Ruport der ideea: P

+0

@sirrocco, wie würdest du das in den Mappings widerspiegeln? –

+0

übrigens habe ich das schon probiert. Ordnen Sie der Eigenschaft parentcategory eine Kategorie-Instanz mit id = 0 zu, jedoch ohne Erfolg. –

+0

Was meinst du vergebens? War es ein Fehler oder was? – sirrocco