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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top