2011-10-27 2 views
2

이것은 Net Tier에서 오는 Entity에 대해 Linq를 처음 이해하려는 시도입니다. 그것으로 뒤죽박죽하지만 그것 뒤에있는 논리의 일부를 이해하지 못하는 것. 예를 들면. 는 언제 사용합니까 :Linq to Entity 및 Loading EntitySets

Entity.EntitySet.Load() 

context.Entity.Include("EntitySet").SingleOrDefault() 

또한 왜 문자열이 아닌 열거 나 종류을 포함 하는가?

답변

1

EF에는 지연로드 및 지연로드가 있습니다.

  • 지연로드는 필요할 때마다 데이터를로드한다는 것을 의미합니다. 이 작업은 Load() 메서드 호출을 통해 수행됩니다.
  • 열렬한로드는 초기 쿼리에서 Include (문자열)에로드 할 수 있도록 일부 데이터가 필요하다는 것을 이미 알고 있다는 것을 의미합니다.

알 힘든 포함이 문자열을 사용하면 이것을 확장 할 수 없다는 의미는 아닙니다.

T4는 좋은 점입니다. 우리가 작업 한 프로젝트에서 엔티티의 모든 탐색 속성에 대한 정적 속성을 포함하는 EntityProperty 클래스를 만들었습니다. 이렇게하면 속성 이름이 변경되면 최소한 컴파일 오류가 발생합니다.

정말로 한 단계 더 나아가려면 람다를 사용하고 QueryProvider로 실행하기 전에 표현식 트리를 다시 배열하는 Include 메소드를 작성할 수 있습니다. 그렇다면 멋진 정적 타이핑을 할 수 있습니다.

+0

그냥 Lazy Loading 및 Eager 로딩에 대해 자세히 읽어보십시오. 지금 가지고있는 문제 (아마도 다른 질문)는, 분리 된 내 개체 개체가 Include를 사용한 후에 Entity.EntitySets를 읽을 수 없다는 것입니다. 초기로드가 10 인 경우 Count가 0입니다. EntitySet 값을 원할 때마다 다시로드해야합니까? (희망이 이해가). – Rob

+0

시작 게시물을 자신이하고있는 일의 코드 예로 업데이트 할 수 있습니까? –

+0

나는 웹 페이지를 처리하는 데 실수를 저질렀다고 생각한다. Page_Load가 필요하지 않으면 EntitySet을로드하고있다. 긴 이야기지만 이미 분리 된 엔터티와 엔티티 집합의 수를 확인하는 가장 좋은 방법에 대한 stackoverflow 다른 질문을 제기해야 할 것 같아요. – Rob

0

Include는 일반적으로 관련 테이블을로드하는 데 사용됩니다. 로드는 요청 된 엔티티를 명시 적으로로드합니다.

MS가 선택했기 때문에 문자열이 사용됩니다. 실제 제한 사항을 인식하지 못하기 때문입니다. T4가 MVC에서 문자열 액션의 문제를 어떻게 해결하는지에 대해 - 좀 더 강력한 타이핑을 지원하기 위해 개선/확장 할 수 있을지도 모릅니다.

+0

앞으로 더 강력한 타이핑을 지원하기를 진심으로 희망합니다. – Rob