BLToolkit эквивалент LoadWith из L2S - PullRequest
2 голосов
/ 28 января 2012

При работе с Linq to SQL вы можете использовать DataLoadOptions, чтобы указать, какие «дочерние» объекты загружать. Есть ли похожая методика с BLToolkit?

Хорошо, что с BLT я могу создать BO напрямую, например:

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

однако, следуя этому маршруту, пока создается весь дочерний объект, мне нужно будет указать каждое поле в Parent (то есть ParentId, ParentName, ParentDob ​​и т. Д.)

Спасибо.

1 Ответ

2 голосов
/ 28 января 2012

Не совсем так, как 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 также присоединяться к дочерней таблице. Вы могли бы пойти еще дальше, то есть p.Child.Friends.etc.

...