Вот сценарий:
У меня есть связь между «Группы» и «Пользователи», представленная объектом «UserGroupAssignment».
public class UserGroupAssignment
{
[Key]
public virtual long Id { get; set; }
[Association("UserAssignmentToUser", "UserId", "Id", IsForeignKey = true)]
public virtual User { get; set; }
[Association("UserAssignmentToGroup", "GroupId", "Id", IsForeignKey = true)]
public virtual Group { get; set; }
public virtual bool IsPrimary { get; set; }
public virtual DateTime? ValidFrom { get; set; }
public virtual DateTime? ValidTo { get; set; }
}
У меня есть два метода бизнес-логики, GetUserAssignmentsForGroups и GetGroupAssignmentsForUsers, которые возвращают назначения со свойствами User и Group, заполненными соответственно. Т.е. GetUserAssignmentsForGroup принимает GroupId и возвращает назначения для этой группы с заполненным свойством User.
То, что я хочу, это представить эти два метода как методы запроса домена следующим образом:
[Query]
public IQueryable<UserGroupAssignment> GetAssignmentsForGroupWithUsers(long groupId)
{
return this.businessLogic.GetUserAssignmentsForGroups(groupId);
}
[Query]
public IQueryable<UserGroupAssignment> GetAssignmentsForUserWithGroups(long userId)
{
return this.businessLogic.GetGroupAssignmentsForUsers(userId)
}
Моя проблема заключается в том, что, хотя методы бизнес-логики возвращают правильно заполненные назначения через NHibernate, службы RIA НЕ передают дочерние объекты (пользователя или группу) по проводам.
Я не хочу использовать атрибуты [Include] в свойствах User или Group класса UserAssignment, так как я хочу минимизировать полезную нагрузку по сети - я не хочу отправлять группу, когда я Например, интересует только пользователя каждого пользовательского задания.
Так что мой вопрос таков:
Как мне сообщить службам RIA
явно включать юзеры
в одном домене метод запроса и группы
Субъекты в другом?
Помните, я использую NHibernate в качестве внутреннего и пользовательского методов запросов в RIA Services, поэтому не могу использовать стиль EF, включенный в запрос клиента.
Спасибо
Joel