1

親と子のテーブルと、それらの間の関係を維持する ParentChild テーブルがあるとしましょう。

親クラス:

public class Parent
{
    public virtual int ParentId { get; set; }
    public virtual bool Deleted { get; set; }

     public Parent()
     {
       _children = new HashedSet<Child>();
     }

     protected ISet<Child> _children;

     public virtual ISet<Child> children
     {
         get { return _children; }
         protected set { _children = value; }
     }
}

子クラス:

public class Child
{
    public virtual int ChildId { get; set; }
    public virtual bool Deleted { get; set; }

     public Child()
     {
       _parents = new HashedSet<Parent>();
     }

     protected ISet<Parent> _parents;

     public virtual ISet<Parent> parents
     {
         get { return _parents; }
         protected set { _parents = value; }
     }
}

および ParentChild クラス:

public class ParentChild 
{
    public virtual int ParentChildId { get; set; }
    public virtual Parent Parent { get; set; }
    public virtual Child Child { get; set; }
    public virtual int DisplayOrderIndex { get; set; }
    public virtual bool Deleted { get; set; }
}

これらをマップして、親オブジェクトを更新し、ジャンクション テーブルを追加データ (親/子 ID だけでなく) と子テーブルで更新できるようにするにはどうすればよいでしょうか。

今のところ、私はやっています:

親マップ

public ParentMap()
{
    Table("Parent");
    Id(x => x.ParentId);
    Map(x => x.Deleted);
    HasMany(x => x.ParentChild)
        .Table("Parent_Child")
        .KeyColumn("ParentID")
        .Access.CamelCaseField(Prefix.Underscore)
        .Cascade.AllDeleteOrphan()
        .LazyLoad();
}

子マップ

public ChildMap()
{
    Table("Child");
    Id(x => x.ChildId);
    Map(x => x.Deleted);
    HasMany(x => x.ParentChild)
        .Table("Parent_Child")
        .KeyColumn("ChildID")
        .Access.CamelCaseField(Prefix.Underscore)
        .Cascade.AllDeleteOrphan()
        .LazyLoad();
}

親子マップ

public ParentChildMap()
{
    Table("Parent_Child");
    Id(x => x.ParentChildId, "Parent_ChildID");
    References(x => x.Parent, "ParentID");
    References(x => x.Child, "ChildID");
    Map(x => x.DisplayOrderIndex);
    Map(x => x.Deleted);
}

しかし、Parent リポジトリからプルすると、Parent オブジェクトの ParentChild コレクションの Child は、Child タイプではなく Castle.Proxy になります。

望ましい結果を得るには、このマッピングをどのように行う必要がありますか?

4

0 に答える 0