В XAML DataGrid привязан к списку объектов EF, называемых Results
. Один из столбцов связан с Count
из Buildings
навигационной функцией. Ленивая загрузка отключена. Поэтому мне нужно включить Buildings
в запрос, чтобы получить его. Это вызывает проблемы с производительностью, поскольку целая коллекция объектов Buildings
загружается в память. Но мне просто нужен Count
. Есть ли способ получить Count
свойства навигации, не загружая его в память?Получение значения атрибута навигации без загрузки всей коллекции в Entity Framework
var resQuery =
db.BAStreets
.Include("Street.StreetType")
.Include("Area.District")
.Include("Buildings")
.Where(x => true);
Results = resQuery.ToList();
Связывание в XAML:
<DataGridTextColumn Binding="{Binding Buildings.Count}"/>
И немного дополнительный вопрос. Я использую это: .Where(x => true)
, чтобы передать DbSet в IQueryable. Похоже, это запах. Что такое стандартный шаблон?
К вашему дополнительному вопросу; либо просто используйте возвращаемый тип в любом случае (и не важно, что это более точно, чем строго необходимо, он все равно будет реализовывать «IQueryable»), или в тех немногих случаях, когда это не работает, используйте '.AsQueryable()'. –