BLToolkit相当于L2S的LoadWith

时间:2012-01-28 00:04:03

标签: linq bltoolkit

使用Linq to SQL时,可以使用DataLoadOptions指定要加载的“子”对象。 BLToolkit有类似的技术吗?

很高兴使用BLT我可以直接创建BO,例如:

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

然而走这条路线,在创建整个Child对象时,我需要指定Parent中的每个字段(即ParentId,ParentName,ParentDob等)

感谢。

1 个答案:

答案 0 :(得分: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);

因此,不是“select p”或“select new Parent()”,我们让静态函数返回“p”,但在返回之前还将Child对象分配给“parent.Child”。只要你的关联设置正确(BLToolkit.Mapping.Association),p.Child就会告诉BLT加入Child表。你可以走得更远,即p.Child.Friends.etc。