У меня есть таблица городов около 2.5 миллионов записей (весит 2гб) и если в SQL запрос выполняется моментально по поиску, то Entity Framework начинает сначала всю таблицу выгружать в память и все подвисает на достаточно долгое время, не подскажите как работать с такими тяжелыми таблицами.
var country = _repo.Get<Country>(x => x.CountryId == 1);
var cities = country.Cities.Where(x =>
x.TitleRu.Trim().ToLower().StartsWith("ново")).ToList();
Я проверил запрос в LINQPad 5 там аналогичный запрос выполняется тоже моментально
Ок, проблема в том, что ваш Cities - это List<City>. List - не IQueryable. Любая работа со списком вытянет в память весь список, и потом уже отфильтрует его.
Если хотите работать с Cities через EF, с отображением запроса в базу - или выбирайте из контекста изначально Cities, с фильтром по City.CountryID
var cities = _repo.Get<City>(x => x.City.Country.CountryId == 1 &&
x.TitleRu.Trim().ToLower().StartsWith("ново"))
).ToList();
или работайте через context.Entry(...).Collection(...)
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости