Dati gerarchici NHibernate fluenti
-
05-07-2019 - |
Domanda
Ciao a tutti. Domanda veloce sulla sintassi fluida. Avevo pensato di averlo eliminato, ma sto ottenendo uno strano fallimento. Fondamentalmente, ho un tipo di struttura gerarchica che sto cercando di persistere, e tutto sembra funzionare, tranne quando faccio un vero test di integrazione con il db.
Ho un oggetto Node che ha una proprietà Parent, che è un altro Node, e un campo _children che supporta una proprietà Children di sola lettura, che è anche una raccolta di Nodes.
Le proprietà gestiscono la correlazione delle relazioni e gli oggetti in memoria vengono eseguiti correttamente. Quando li recupero dal repository (un db SQLite in memoria nei miei test), tuttavia, i Node's Children si includono per qualche motivo. Qualche idea?
I miei mapping sono per lo più eseguiti con AutoMap, ma ho ignorato quanto segue:
mapping.References(x => x.Parent);
mapping.HasMany(x => x.Children).Inverse().Access.LowerCaseField(Prefix.Underscore);
L'ho provato anche senza la chiamata Inverse ().
Soluzione
Capito. Il problema era che dovevo dire alla raccolta di bambini in quale campo ID agganciare la chiave esterna.
Ho cambiato quella mappatura per assomigliare così:
mapping.HasMany(m => m.Children)
.Inverse()
.KeyColumn("ParentId")
.Access.CamelCaseField(Prefix.Underscore)
.Cascade.All()