У меня есть следующие функции сопоставления:
private static Expression<Func<ActionComment, Domain.ActionComment>> MapActionComment =
actionComment => new Domain.ActionComment
{
Id = actionComment.Id,
Comment = actionComment.Comment,
};
private static Expression<Func<Action, Domain.Action>> MapAction =
action => new Domain.Domain
{
Id = action.Id,
Comments = action.ActionComments
.Select(ac => MapActionComment.Invoke(ac))
};
private static Expression<Func<Nc, Domain.Nc>> MapNc =
nc => new Domain.Nc
{
Id = nc.Id,
Actions = nc.Actions
.Select(a => MapAction.Invoke(a)),
};
И следующий запрос Linq-to-SQL:
_ctx.NCs
.Where(n => n.Id == id)
.Select(MapNc)
.SingleOrDefault();
В результате SQL-оператор будет выглядеть так:
Дело в том, что коллекция Comments объекта Action не загружает свое содержимое (оно отложено до фактического использования коллекции).
Есть ли способ заставить Linq-to-SQL генерировать ONE один оператор, который будет извлекать Ncs, Actions и ActionComments?