2011-03-15 4 views
0

나는 C#, linq 및 EF4를 사용합니다.LINQ 두 변수로 접합 테이블에서 행을 식별 할 수있는 쿼리 - 어떻게 수행 할 수 있습니까?

복합 PRIMARY KEY에 대해 두 변수를 사용하여 데이터베이스에서 행을 식별 할 수있는 LINQ 쿼리를 작성하는 데 도움이 필요합니다. 내 개념 모델로 표현 나의 데이터베이스에

다음

테이블 :

데이터베이스 테이블 :

CmsContents 
CmsCategories 
CmsRelatedCategories (Pure Juction Table) 

법인 유형 :

CmsContent 
CmsCategory 

Entyt 설정 :

CmsContents 
CmsCategories 

I 그렇게해라. 나 탐색 속성 : 표시되는 접합 테이블에 대한 데이터베이스

for CmsContents --> CmsCategories --> Return Collection of Cms CmsCategory 
for CmsCategories --> CmsContents --> Return Collection of Cms CmsContents 

데이터 :

나는 두 변수의 카테고리 ID 및 콘텐츠 ID의 예를 사용하여 순수 접합 테이블에서 단일 개체를 식별해야
CategoryId  ContentId 
7    1 
7    2 
9    2 

:

CategoryId  ContentId 
9    2 

현재이 코드를 사용하여 단일 개체를 검색하지만 올바르게 작동하지 않습니다.

CmsContent myContentObj = (CmsContent)context.CmsContents.Where(x => x.ContentId == myContentId); 

어떤 생각이 어떻게 그것을 해결하기 위해?

+0

"작동하지 않음"은 오류에 대한 적절한 설명이 아닙니다. 너의 문제는 무엇이고, 너는 무엇을 원합니까? CmsCategory의 인스턴스 또는 CmsContent의 인스턴스? –

+0

안녕하세요, CmsContent 인스턴스를 원합니다 – GibboK

+0

단일 행을 검색하려면 두 ID를 알고 있어야합니다. 맞습니까? 이제 catadoryid가 아닌 contentid 만 테스트합니다. – MarcelDevG

답변

1

사용이 :

CmsContent myContentObj = context.CmsContents.Where(x => x.ContentId == myContentId).FirstOrDefault(); 

나는 ContentId이 CmsContent 테이블의 전체 기본 키라고 가정. 그렇지 않으면 매핑 테이블이 이해가 안되기 때문에이 가정은 정확해야합니다.

설명 : whereIEnumerable<CmsContent> 아닌 단일 인스턴스를 반환하기 때문에
가 귀하의 질의 작동하지 않습니다. 그것은 FirstOrDefault입니다 : 지정된 요소 ID가있는 요소가없는 경우 첫 번째로 발견 된 요소 또는 null (더 정확하게는 default(CmsContent))을 반환합니다.

관련 문제