2009-03-03 3 views
0

현재 작업중인 프로젝트의 일부에 대해 신디케이션 가능 작업에 대한 네 개의 테이블 집합이 있습니다. 하나 개의 테이블은 다른 세의 추상 기본이며, 각 테이블과 같이 내 EF 모델에서 표현된다 : 나는 현재이와 마주하고있어 두 가지 문제가, 그러나있다Entity Framework 상속 문제 (유형별 테이블)

EF Model -- Actions http://chris.charabaruk.com/system/files/images/EF+Model+Actions.png

. 첫 번째 문제는 연결된 데이터베이스 열이 관련된 키가 연결된 행에도 불구하고 내 서브 클래스에 null (User에 대한 참조) 및 Subject (각 작업 유형과 관련된 클래스의 엔터티에 대한 참조)이 null이라는 것입니다. 테이블. ActorReferenceSubjectReference을 통해 키를 얻을 수 있지만 물론 새로운 EF 컨텍스트를 설정하고 참조 된 개체를 쿼리해야합니다 (FooReference.Value도 null 임).

두 번째 문제는 구체적인 동작 클래스와 관련 엔터티 클래스 간의 관계의 상호 끝이 항상 아무 것도 나타나지 않는다는 것입니다. 예를 들어, Task.RelatedActionsTaskAction 개체를 모두 가져야합니다. SubjectRelatedActions이 호출되는 특정 작업 개체를 나타냅니다. 개체는 완전히 없습니다. 다시 말하지만, 유효한 행은 데이터베이스에 존재하며 Entity Framework는 개체를 개체에 넣지 않고 나에게 넘겨주지 않습니다.

누구나 내가 뭘 잘못하고 있는지 알 수 있으며, 제대로 작동하려면 어떻게해야합니까?

업데이트 : 관계 속성이 내 엔티티 모델에서 더 이상 작동하지 않는 것으로 보입니다. WTF ...

답변

5

여기서 겪고있는 문제는 기본적으로 EF가 관련 엔티티를 자동으로로드하지 않는다고 생각합니다. 엔티티를로드하는 경우 다음 중 하나를 수행하지 않으면 관련 엔티티에 대한 콜렉션 또는 참조가 비어 있습니다.

1) 기본 엔티티 및 관련 엔티티를 단일 쿼리에서 검색하려면 열심히로드하십시오. 이렇게하려면 Include 메서드에 대한 호출을 추가하여 쿼리를 수정합니다. 위의 샘플에서 다음 쿼리를 사용할 수 있습니다.

이렇게하면 관련 Actor 메서드로 각 동작을 검색합니다.

2) 당신이 그것을 필요로 할 때 관련 엔티티를 검색하기 위해 명시 적으로 게으른 로딩을 사용

닷넷 4.0과 함께 제공됩니다 EF의 버전에서
action1.ActorReference.Load() 

, 당신은 또한 다음과 같은 추가 옵션이 있습니다 :

3) 내비게이션 속성을 참조 할 때 관련 엔터티가 자동으로 검색되도록 암시 적 지연 로딩을 켭니다.

  • 대니
+0

나는 당신이 옳은 것 같아요. 우리가 .NET 4.0과 EF 2를 얻을 때까지 1 년이 될 것이기 때문에 EF 1.0이 암시 적으로 느린 로딩과 함께 제공된다면 좋을 것입니다. –

+0

이것은 실제로 내 문제를 해결합니다. 감사! –

관련 문제