Fluente Nhibernated - Relazione hasmany nella stessa tabella
Domanda
Sto creando un modello per un sito Web Top -Menu Structure -
Ho un modello di menuObject:
public class MenuObject
{
public virtual int Id { get; set; }
public virtual string Title { get; set; }
public virtual List<MenuObject> Children { get; set; }
}
e una mappatura:
public mapMenu()
{
Id(x => x.Id)
.Not.Nullable();
Map(x => x.Title)
.Not.Nullable();
HasMany<MenuObject>(x => x.Children)
.AsList();
}
Fondamentalmente voglio essere in grado di creare una voce di menu "di livello superiore", quindi aggiungere alcuni elementi figlio ad essa - in termini di database, dovrebbe esserci un campo genitore che contiene l'ID della voce di menu principale (se presente - questo potrebbe essere nullo )
Sto lottando per metterci alla testa su come questo dovrebbe essere definito nel mio modello a oggetti. Inoltre, una volta configurato questo, come vorrei salvare i bambini? Sarebbe qualcosa di simile
public void InsertChild(MenuObject parent, MenuObject child)
{
parent.Children.add(child)
session.SAve(parent)
.....
}
O dovrei salvare il bambino in modo indipendente e collegarlo esplicitamente al genitore?
Modificare *****
Grazie - quindi ora ho quanto segue nel mio modello:
public virtual MenuObject Parent { get; set; }
public virtual List<MenuObject> Children { get; set; }
E questo nella mappatura:
HasMany(x => x.Children)
.AsList()
.Inverse()
.Cascade.All()
.KeyColumn("ParentId");
References(x => x.Parent, "ParentId");
Ora posso aggiungere bambini ai genitori ITMS nel modo seguente:
oChild.Parent = oParent;
session.SaveOrUpdate(oParent);
session.Save(oChild);
transaction.Commit();
Penso di essere in un vincitore! È questo il modo migliore per farlo? Grazie Gdoron
Nessuna soluzione corretta