Прежде всего, извините за плохое название, я могу только описать проблемуRIA Services и MVVM загрузки, вопрос о запросе данных (отделяющий данные)
Допустим, база данных на сервере есть таблицы/тип так называемые задачи , и эти задачи могут принадлежать пользователю и назначаться пользователю.
SomeTask.Owner = SomeUser
SomeTask.Assignee = SomeOtherUser
В сервере определены некоторые дополнительные запросы:
public IQueryable<Task> GetAssignedTasks(int UserId) { /* gets the assigned tasks */ };
public IQueryable<Task> GetOwnedTasks(int UserId) { /* gets the owned tasks */ };
В ViewModel они могут быть загружены в качестве таковых:
var ownedTasksQuery = context.GetOwnedTasksQuery(userId);
context.Load(ownedTasksQuery);
var assignedTasksQuery = context.GetAssignedTasksQuery(userId);
context.Load(assignedTasksQuery);
Проблема здесь состоит в том, что оба результата загружаются в контекст, т. е. context.Tasks содержит объединение обоих результатов запроса
Моя первая мысль здесь была просто изменить поглотитель для свойств в моем ViewModel:
public IEnumerable<Task> OwnedTasks
{
get { return context.Tasks.Where(t => t.UserId == userId); }
}
public IEnumerable<Task> AssignedTasks
{
get { return context.Tasks.Where(t => t.UserId == userId); }
}
Однако, когда я связываю с видом на эти свойства, ничего не возвращается, а если я где использовать следующие , все загруженные записи возвращаются (очевидно):
public IEnumerable<Task> OwnedTasks
{
get { return context.Tasks; }
}
public IEnumerable<Task> AssignedTasks
{
get { return context.Tasks; }
}
Я предполагаю, что я собираюсь об этом полностью неправильно, , что это правильный способ справиться с ситуацией, как это?
Обновление: Или я должен просто справиться с этим, создав еще один экземпляр контекста?
Update: Кажется, я собирался на это неправильный путь ... Я все еще думает в терминах причислять запросов к базе данных ...
Все, что я должен сделать, чтобы решить мою проблему здесь загрузите Пользователь включая назначенные и принадлежащие задачи ...
ObjectContext.Users.Include("OwnedTasks").Include("AssignedTasks")
сделает это сообщество вики, в случае, если кто-то другой делает то же самое.
Нет, это опечатка ... извините: p – TimothyP
Все нормально. В. Где указана переменная «userId», используемая в выражениях Linq? –