나는 LINQ 파워 유저가 아니지만 기본 수준에서 실수를 저지를 수 있습니다. LINQ가 쿼리 "전략"을 공식화하는 방법에 관한 질문이 있습니다. 나는 이것을 가능한 한 최선의 방법으로 설명하려고 노력할 것이고, 기억에 의해 극히 어리석은 예를 쓸 것이다.LINQ가 하나의 "조인"쿼리 대신 여러 쿼리 수행
여러 데이터베이스보기가 포함 된 데이터 모델이 있습니다. 의는 다음과 같이 뷰를 열 구조를 가지고 있다고 가정 해 봅시다 :
PersonView에게
PersonViewId | Surname | GivenName | OtherViewId
------------------------------------------------
오더 뷰보기
OtherViewId | PersonViewId | Name
---------------------------------
을보기위한 기본 키를 설정 한 후 (PersonView.PersonViewId/OtherView.OtherViewId) 및 해당 필드를 설정할 수 없도록 설정하면 PersonView.PersonViewId (Parent)와 OtherView.PersonViewId (Child) 간의 연결이 만들어집니다. 나는 그것이 "1-1"하고 그것을 소비하는 코드를 작성하도록 설정 : 매우 저조한 실적을 몰래 후
StringBuilder s = new StringBuilder();
foreach(PersonView p in dc.PersonViews)
{
s.AppendLine(p.OtherViews.Name + "<br />");
}
을, 나는 데이터베이스를 프로파일과는 foreach 문에 PersonView의 각각에 대해 질의를하고 있었다 발견 성명서.
이 시점에서 쿼리를 다시 작성하고 DBML의 연결을 LINQ 쿼리의 JOIN으로 바꾸고 데이터베이스를 프로파일 링 한 다음 DB를 예상 한대로 한 번만 쿼리했습니다.
나는 그것이 DB와 실제로 관련이 있다고 생각하지만, 실제로 DB를 쿼리하고 있지만 어디에 디버깅해야할지 모르겠다. 누군가가 이것을 사용하여 협회의 퍼포먼스를 향상시키는 데 도움이되도록 적절한 방향으로 나를 가리킬 수 있습니까? 아니면 내가 필요한 것을 성취하기 위해 JOIN을 사용하고 있습니까?
감사합니다 :)
LINQ에서 생성 된 코드를 확인해야합니다. –