ウェブサイトのトップメニュー構造のモデルを作成しています-
MenuObjectモデルがあります:
public class MenuObject
{
public virtual int Id { get; set; }
public virtual string Title { get; set; }
public virtual List<MenuObject> Children { get; set; }
}
およびマッピング:
public mapMenu()
{
Id(x => x.Id)
.Not.Nullable();
Map(x => x.Title)
.Not.Nullable();
HasMany<MenuObject>(x => x.Children)
.AsList();
}
基本的に、「トップレベル」メニュー項目を作成してから、それにいくつかの子項目を追加できるようにしたいです。データベース用語では、親メニュー項目のIDを含むParentIdフィールドが必要です(存在する場合)。これはnullになる可能性があります。 )。
これをオブジェクトモデルでどのように定義するかについて頭を悩ませています。また、これを構成したら、子供を救うにはどうすればよいですか?それは次のようなものでしょうか
public void InsertChild(MenuObject parent, MenuObject child)
{
parent.Children.add(child)
session.SAve(parent)
.....
}
または、子を独立して保存し、親に明示的にリンクする必要がありますか?
編集**** * _ _
ありがとう-だから今私は私のモデルに次のものを持っています:
public virtual MenuObject Parent { get; set; }
public virtual List<MenuObject> Children { get; set; }
そしてこれはマッピングで:
HasMany(x => x.Children)
.AsList()
.Inverse()
.Cascade.All()
.KeyColumn("ParentId");
References(x => x.Parent, "ParentId");
これで、次の方法で子を親itmsに追加できます。
oChild.Parent = oParent;
session.SaveOrUpdate(oParent);
session.Save(oChild);
transaction.Commit();
私は勝者だと思います!それが最善の方法ですか?THanks gdoron