2

使用 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 等)

谢谢。

4

1 回答 1

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”,而不是“select p”或“select new Parent()”,但在返回之前将 Child 对象分配给“parent.Child”。只要您的关联设置正确(BLToolkit.Mapping.Association),p.Child 就会告诉 BLT 也加入 Child 表。你可以走得更远,iepChild.Friends.etc。

于 2012-01-28T04:24:33.000 回答