Я использую Entity Framework с MySQL и не могу правильно выполнить запрос. Я пытаюсь получить одну точку для доступа к типу объекта. То есть Адрес.
Это то, что у меня есть в хранилище.
public IQueryable<Address> GetAddresses()
{
return from a in DBContext.addresses
select new Address
{
Id = a.instance,
City = a.city,
Country = a.country,
Owner = a.owner,
PostalCode = a.postcode,
Street = a.street
};
}
На служебном уровне я добавляю предикат, который будет добавлен к объекту IQueryable и выполняю запрос
public Data.Address GetAddress(Func<Data.Address, bool> predicate)
{
List<Data.Address> items = referenceDataRepository.GetAddresses().Where(predicate).FirstOrDefault();
return items;
}
предикат будет (x => x.Owner = 233)
При проверке журнала MySQL я вижу, что выполняемый запрос НЕ включает предложение where, и кажется, что предикат применяется после возврата всех адресов, что очень дорого.
Я что-то упускаю из-за IQueryable и как он выполняется.
Спасибо.