У меня есть модель EntityFramework, которая имеет Пользовательский объект, который имеет EntityCollection Организаций.
Для конкретного Пользователя я пытаюсь записать Запрос Linq для возврата названий организаций, что пользователь принадлежит, где тот запрос поразит дб только однажды.
Моя проблема состоит в том, что я не вижу, как записать, что этот запрос, не имея необходимость осуществлять пользователя сначала затем запрашивает пользовательский набор организации.
Я хотел бы попытаться записать один запрос, который поражает дб однажды.
Что я имею до сих пор:
var orgNames = context.Users
.Where(u => u.LoweredUserName == userName.ToLower())
//materialises user
.FirstOrDefault()
.Organisations
//second hit to the db
.Select(o => o.Name);
Что я был стремлением psuedo, но не видьте лес для деревьев:
orgNames = context.Users
.Where(u => u.LoweredUserName == userName.ToLower())
//don't materialise but leave as IQueryable
.Take(1)
//The problem: turn what the query sees as possibly multiple
// (due to the Take method) EntityCollection<Organisation> into a List<String>
.Select(u => u.Organisations.Select(o => o.Name));
Я посмотрел на агрегаты, но я, кажется, вхожу в круги :)