Я использую 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 и того, как он выполняется.
Спасибо.
Address
? Разве вы не можете просто использоватьreturn from a in DBContext.addresses select a;
в своем методеGetAddresses
? - person Slauma   schedule 11.04.2011