Come aggiungere relazioni (nibernetico) - nibire

Perché devo aggiungere relazioni per figlio e genitore?

Child child = Session.Get (1); Parent parent = Session.Load (1); parent.Children.Add (bambino); child.Parent = parent;

Funziona perfettamente senza parent.Children.Aggiungi (figlio) se l'uso è inverso = vero e non ho bisogno di Raccolta figli nella sessione corrente (sessione per richiesta web). Aggiungete sempre una relazione per figlio e genitore?

risposte:

2 per risposta № 1

Ambientazione child.Parent = parent è sufficiente per mantenere la relazione.

Tuttavia, se non aggiungi il bambino alla raccolta, non sarai in grado di sfruttare la cascata, quindi dovrai insistere sul bambino esplicitamente.

Inoltre, se non si imposta uno dei lati, si avrà un modello di memoria incoerente (perché il bambino non sarà aggiunto alla raccolta a meno che non lo si ricarichi).


2 per risposta № 2

Spero di aver capito bene.

class Parent { List Children {get;set;} class Child { Parent Parent {get;set;}

ANS1. In questo scenario, Inverse dice al framework nibernetico di lasciare il meccanismo di controllo della relazione [Genitore-Bambino] con il Bambino (riguarda principalmente quale oggetto è responsabile dell'eliminazione / aggiornamento del bambino). Con attributo Inverse su Proprietà figli, il bambino è responsabile per se stesso, altrimenti il ​​genitore è responsabile dell'eliminazione di un bambino.

ANS2. Nella maggior parte dei casi non hai bisogno di entrambe le proprietà (Bambini, Genitore) (ne hai bisogno se specifichi inverse = true su Bambini). Dipende solo dalla funzionalità che vuoi ottenere.

Questo risponde brevemente alla tua domanda?


Più popolare