2009-08-10 7 views
3

꽤 많은 커미션 관리자가 직장에서 프로젝트에서 일하는 임과 나는 linq에서 제대로 SQL에 항목 테이블을 연결하는 방법을 알아낼 수 없습니다.여러 ID 필드에 의해 개체를 연결하는 SQL에 linq

은 또한이 (같은 데이터베이스보기는 실제로는 다른 데이터베이스에서이 응용 프로그램에서 읽기 전용) 패키지 세부 사항 (무엇보다도)이 테이블

DepartmentID, CategoryID, ItemID 

그리고 항목 테이블이 이 3 필드하지만 이러한 3 필드와 연관을 추가 할 때 PackageDetail 클래스의 속성 개체로 추가 할 필요가 없습니다

내가 연관성에 문제가 있습니까? 모든 단일 것들이 잘 일하고 있어요 ...

답변

3
내가 Linq에 - 투 - SQL이 제대로 복합 키의 연관 모델링 할 수 있다고 생각하지 않습니다

:

그러나 Is it beneficial to use multicolumn (composite) primary keys when using Linq to SQL?

, 당신은 여전히 ​​Linq는 간에서 합성 키 객체를로드 할 수 있습니다 (단일) 키로 익명 객체를 사용하여 SQL 쿼리 : - 즉, 당신이 항목 Id를 사용하고 그 가장 구체적인 규정 때문에 다른이를 무시 단지 있었던 것처럼

http://msdn.microsoft.com/en-us/library/bb399391.aspx

1

기본 키로 이러한 ID 필드를 표시 했습니까? 필수 열을 기본 키로 할당했는지 확인하십시오. 그러면 정상적으로 작동합니다. 희망 하시겠습니까?

0

기본 키와 외래 키 관계로 키가 올바르게 설정되었는지 확인하십시오. 여전히 작동하지 않는다면 복합 키에 의존하기보다는 새로운 키 열을 추가 할 수 있습니까?

LINQ to SQL의 마지막 옵션은 일반적으로 수동으로 XML 편집기를 사용하여 DBML을 수동으로 업데이트합니다. 다음과 같이 일반적인 단일 키 관계가 나타납니다

<Association Name="Schedule_Profile" Member="Schedule" ThisKey="ScheduleID" Type="Schedule" IsForeignKey="true" /> 

당신이 요소를 직접 생성하고 컬럼의 CSV 목록에 ThisKey을 설정하려고 시도 제언한다. OtherKey 속성도 중요 할 수 있습니다.

0

같습니다 부서 및 카테고리는 itemId에 의해 완전히 결정됩니다.

+0

실제로 ItemID는 부서 카테고리별로 고유하지 않습니다. – dkarzon

0

같은 검색어를 사용하셨습니까?

var result = from table in dbContext.table1 join table2 in dbContext.table2 join new { table.DepartmentID, table.CategoryID, table.ItemID} equals new {table2.DepartmentID, table2.CategoryID, table2.ItemID} 
select table; 
+0

아니, 린 결합 SQL 데이터베이스를 의미하고 두 번째 테이블은 실제로 테이블이 아닌 뷰입니다. – dkarzon

관련 문제