Poate NHibernate genera valoare pentru proprietate?

voturi
2

coloane Id pot specifica un generator. Perfect.

Cu toate acestea, am o situație în care am nevoie pentru a atribui o valoare generată într-o coloană de proprietate în cazul în care acesta este nul. Gândiți-vă ceva de-a lungul liniilor unui tabel de factură în cazul în care există o coloană cheie primară surogat și o coloană Numărul facturii.

CREATE TABLE dbo.Invoice (InvoiceId INT NOT NULL PRIMARY KEY IDENTITY(1,1), InvoiceNumber INT NOT NULL, InvoiceDate DATETIME NOT NULL, remaining columns...)

Aceasta nu este o valoare prestabilită. Numărul facturii ar putea avea anumite reguli în jurul generatiei sale. Am o # clasa C, care se ocupă de generația actuală, trebuie doar să găsească o modalitate de a popula valoarea proprietății pe clasa factură.

În mod ideal, aș putea specifica un generator pentru o proprietate ca am face o Id-ul în cartografiere. Din păcate, nu pare posibil din ceea ce pot determina. Sper să mă înșel.

Am alte opțiuni, non-Nhibernate am putea angaja ca folosind un declanșator, introducerea generație în furnizor. Cu toate acestea, aș dori să-l o opțiune de configurare, mai degrabă decât o opțiune de codificare păstra.

Stie cineva dacă există o astfel de abilitate?

Întrebat 12/03/2009 la 15:11
sursa de către utilizator
În alte limbi...                            


3 răspunsuri

voturi
0

Vrei să spui că doriți să furnizați o valoare implicită valoare?

Aș spune că acest lucru ar trebui să fie ceva care ar trebui să specifice la nivelul DB ...

Dacă doriți cu adevărat că Nhibernate are grijă de acest lucru, cred că ar trebui să creeze un Interceptor, care va stabili valoarea acestei proprietăți, atunci când este nul la același nivel în timp.

Sau, puteți specifica valoarea implicită în entitatea dumneavoastră, oferindu-proprietatea unui default-valoare în constructor.

Publicat 12/03/2009 la 15:13
sursa de către utilizator

voturi
2

NHibernate se așteaptă că va defini toate aceste reguli în clasele de domeniu - de exemplu, în constructorii.

Publicat 12/03/2009 la 15:15
sursa de către utilizator

voturi
0

Ne pare rău pentru răspunsul târziu, dar am fugit recent în aceeași problemă ca și tine. Am backtraced un pic din sursa NHibernate si pare ca am găsit o soluție.

Puteți utiliza spațiul de nume NHibernate.Id pentru generarea Guid. Există 2 opțiuni viabile - permițându-clientul genera GUID sau permițându-PB nativ face acest lucru.

Acestea sunt clasele de care aveți nevoie:

  • generație NHibernate.Id.NativeGuidGenerator // DB
  • generație client NHibernate.Id.GuidGenerator //

Utilizarea NHibernate.Id.NativeGuidGenerator clasa poate fi realizată prin ceva de genul:

public Guid GetNewSessionId()
{
    NHibernate.Id.NativeGuidGenerator guidGen = new NHibernate.Id.NativeGuidGenerator();
    return (Guid)(guidGen.Generate((NHibernate.Engine.ISessionImplementor)anOpenSession, null));
}

Mult noroc cu ea :)

Publicat 07/04/2009 la 13:53
sursa de către utilizator

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more