2012-01-28 3 views
2

Linq to SQLを使用する場合、DataLoadOptionsを使用して読み込む "子"オブジェクトを指定できます。 BLToolkitにも同様のテクニックがありますか?L2TのLoadWithに相当するBLToolkit

それはBLTと私は同じように、直接BOを作成することができますうれしいです:全体の子オブジェクトが作成されている間しかし、このルートを行く

from p in db.Parent 
select new Parent 
{ 
    ParentId = p.ParentId, 
    Child = p.Child 
}; 

、私は親にすべてのフィールドを指定する必要があります(つまり、ParentIdは、ParentName、ParentDobなど)

ありがとうございます。

答えて

2

LoadWithとまったく同じではありませんが、私の考えでは、以下のアプローチはより良い/クリーナー(マジック性が低い)です。あなたのBOで次のようになります静的関数ます

public static Parent Build(Parent parent, Child child) 
{ 
    parent.Child = child; 
    return parent; 
} 

を今、あなたはこのようなあなたのLINQクエリを記述する必要があると思います:

var query = from p in db.Parent 
      select Parent.Build(p, p.Child); 

そうではなく、「Pを選択」または「選択new Parent() "静的関数は" p "を返しますが、返す前にChildオブジェクトを" parent.Child "に割り当てます。あなたの関連が適切に設定されている限り(BLToolkit.Mapping.Association)、p.ChildはBLTにChildテーブルにも参加するように指示します。さらに進んでいくことができます(例:p.Child.Friends.etc)。