문제

설명: 특정 도메인 세그먼트를 서로 다른 세그먼트로 분리하려고 했습니다. DbContext에스.

각각은 여러 DbSet음, 하지만 일부는 있어요 DbSet예를 들어 UserProfile.

이렇게 분리하는 이유는 모델이 생성되는 속도와 단순성 때문입니다(객체의 세트가 적고 Intellisense에 도움이 됨).

그러나 생성된 모델에 정확히 무엇이 속하는지는 잘 모르겠습니다.

Q1: DbSet이 DbContext에 존재하는 엔터티와 전환적으로 연결된 모든 엔터티가 모델에 포함되어 있나요?

Q2: 그렇다면 이는 성능 측면에서 도메인을 다른 컨텍스트로 분리하는 것이 아무런 목적이 없다는 것을 의미합니까? 연결된 모든 것은 어쨌든 모델에 포함되기 때문입니다. DbSet에 명시되어 있습니다. DbContext?

모델 생성 방법에 대한 자세한 정보는 어디서 찾을 수 있나요?EntityFramework 및 CodeFirst에 대한 책을 읽었지만 해당 특정 정보를 찾을 수 없습니다...

도움이 되었습니까?

해결책

당신의 대답 첫 번째 질문:예, 모든 관계는 양쪽의 엔터티를 포함하여 모델링되므로 탐색 속성으로 포함된 엔터티에 연결된 모든 엔터티도 해당 엔터티가 있는지 여부에 관계없이 모델에 포함됩니다. DbSet 그것을 위해서든 아니든.

Entity Framework는 생성을 강요하지 않습니다. DbSets 모든 엔터티에 대해.이는 상위 항목을 통해서만 액세스할 수 있도록 하위 항목을 "제한"하려는 경우 유용할 수 있습니다.

귀하의 두 번째 질문:한 컨텍스트에 속한 모든 엔터티가 다른 컨텍스트에 속한 엔터티의 탐색 속성을 통해 연결할 수 없는 경우 컨텍스트를 분리하면 여전히 성능이 향상될 수 있습니다.거기 ~할 수 있었다 명시적으로 더 많은 것을 포함하는 것과 관련된 추가 비용 DbSets 맥락에서도 마찬가지다.

Entity Framework 소스 코드(일부)를 읽을 수 있으며 이는 오픈 소스이며 사용 가능합니다. CodePlex에서 모델이 어떻게 만들어지는지 자세히 알아보세요.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top