나는 다양한 방법으로 데이터를 질의하는 방법을 제공하고있다. 우리는 4 가지 fitler 기준을 사용자에게 제공하며 원하는만큼 혼합하고 일치시킬 수 있습니다. 예를 들어다 대다 테이블 조인하기
:
public Fruit GetFruit(Boolean isLocal, string storeName, string classificationType, string state);
모든 속성 테이블에있을 때 이것은 간단하지만, 내 문제는 데이터 모델의 복잡성의 결과로 발생한다. 내 속성 중 세 가지는 간단합니다. 단지 조인이지만, 일대 다 관계 뒤에 앉아있는 표가 하나 있습니다. 그래서 그것을 쿼리하기 위해 나는 many to many join을해야합니다.
그래서 상점에서 제공하는 모든 과일을 결정하려고합니다. 상점 과일의 목록을 가지고 있으며, 우리의 classificationType이
alt text http://tinyurl.com/39q6ruj
내가 EF이를 조회 할 수 있었던 유일한 성공 방법 (분류에 의해) 모든 과일을 선택하는 많은 관계 (FruitClassification) 뒤에 앉아있다, 필터 기준을 충족하는 모든 매장을 선택한 다음 합치면됩니다.
당신은 EF에서이 쿼리가 작동 될 생각:
var final = (
from s in Stores
join fc in FruitClassifications.Where(z=>z.Classifications.Code == classificationType && z.Classifications.Type.Code =="FRT").Select(x=>x.Fruit).Distinct()
on s.Fruits.Id equals f.Id
where s.Name=name && s.isLocal && s.State==state
select s
).ToList();
하지만 끔찍한 실행 (그리고 내가 그것을 프로파일 링 같은 모양)을, 나는 데이터베이스에 다운이 쿼리를 밀 수있는 방법이 있습니까 ? 더 나은 쿼리 방법은?
어,'mci'은 무엇인가 : –
그것은 오타였습니다 ... 그것은 s (가게)로되어 있었고, 저는 실제 예를 들고 사람들이 이해할 수있는 것으로 바꾸려고했습니다. – Nix