2011-03-27 2 views
0

Abstract는 MediaItem이라는 엔터티를 만들고이를 Game에서 상속받습니다. 자동으로 데이터베이스를 만들고 MediaItems 및 MediaItems_Game 테이블을 얻습니다. 나는 내 ASP.Net 컨트롤러에서 다음 작업을 수행 할 때ADO.Net EF, 상속 테이블이 표시되지만 모델은 표시되지 않습니다.

문제는 다음과 같습니다

개인 Models.DBContainer 데이터 모델 = 새로운 DBContainer();

dataModel. ---> Intellisense는 MediaItem을 보여 주지만 MediaItems_Game을 탐색하거나 사용할 방법이 없습니다. 어떻게 해결할 수 있습니까? 즉, 다른 테이블에서 'WHERE'제약 조건이있는 '게임'목록을 어떻게 얻을 수 있습니까?

감사합니다. 감사합니다. EF의 상속이 어떻게 작동하는지

enter image description here

답변

0

이입니다. 상위 유형의 단일 세트 만 있습니다. 당신이 기본 테이블 (게임) 생성되는 SQL를 자세히 살펴 쿼리 할 때

var games = dataModel.MediaItems.OfType<Game>().ToList(); 
+0

: 당신은 그냥 게임을 얻고 싶은 경우에 당신은 OfType 방법을 사용합니다. 어쨌든 파생 테이블을 쿼리하는 결과를 얻게됩니다. 충분하지 않은 성능 재해 TPT 상속 결과 (적어도 기본 클래스를 쿼리 할 때)를 참조하십시오 참조 : http://stackoverflow.com/questions/4126668/when-quering-over-a-base-type-why -does-the-ef-provider-generate-all-those-union-a –

+0

아하! 고마워요. 지금이 사실을 이해하기 시작했습니다. 오늘의 과정에서 저에게 제공해 주신 도움에 감사드립니다. –

+0

또한 다른 테이블에서 어떻게로드 할 수 있습니까? . 포함을 사용합니까? 이것이 어떻게 형성 될 것인가, 아니면 내일 또 다른 질문으로이 질문을해야합니까? 감사. –

관련 문제