使用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等)
感谢。
答案 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。