使用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等)
谢谢。
不完全像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.MMapping.Association)p.Child也会告诉BLT加入Child表。你可以更进一步,例如p.Child.Friends.etc.