저는 Entity Framework를 MySQL과 함께 사용하고 있으며 적절한 쿼리 실행을 얻을 수 없습니다. 한 가지 유형의 객체에 액세스하기위한 하나의 지점을 갖기 위해 노력하고 있습니다. 나는. 주소. 이것은 저장소에있는 내용입니다. 서비스 레이어에엔티티 프레임 워크, mysql 및 IQueryable
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 및 실행 방법에 대한 정보가 누락되었습니다.
감사합니다.
왜 '주소'인스턴스로 투영합니까? 당신은'GetAddresses' 메쏘드에서'DBContext.addresses select a;'에서 단순히 return을 사용할 수 없습니까? – Slauma