이미지 두 개의 다른 포럼과 같은 다른 데이터 소스의 스레드와 게시물을 저장하는 거대한 데이터베이스가있는 이미지. 각 데이터 소스에 대해 엔티티의 ID (예 : ThreadId, PostId ...)는 고유하지만 다른 데이터 소스에서 얻은 엔티티의 ID와 충돌 할 수 있습니다. 예를 들어, forum1과 forum2 모두 Threadid = 1 인 스레드를 가질 수 있습니다.Linq2SQL 데이터베이스 디자인 : 매핑 합성/서로 게이트 키
Linq2Sql과 저장소 패턴을 사용하여 내 응용 프로그램을 데이터베이스에 연결합니다. Linq2Sql 사용할 때 합성 키 (ThreadId 및 DatasourceId 사이) 피해야합니다 읽었습니다. 따라서 나는 대리 기본 키는 내 유일한 선택이라고 생각합니다 (입니까?) :
표 스레드 :
- UNIQUEID - INT, PK
- 이 DatasourceId - int로
- ThreadId - INT
- ...
표 게시물 :
- UNIQUEID - INT, PK
- DatasourceId -
- PostId을 int로 -
- 가 ThreadId 값 int - 지능, FK 지금
을 Threads.ThreadId하기 위해, 내 질문은 : 매핑 할 수 Linq2Sql 것 생성 된 클래스에서 게시물과 스레드 간의 1 : 1 관계? 게시물에 Thread.ThreadId에 대한 외래 키가 있고 동일한 ThreadId (물론 다른 DatasourceIds)를 가진 두 개의 엔터티가있는 경우 어떻게됩니까? 이 게시물에 할당 된 스레드의 컬렉션을 반환합니다 것 같아요 - 내가 싫어! 어떻게 든 여전히 동일한 DatasourceId를 공유하는 각 게시물마다 하나의 스레드를 반환 할 수 있습니까?
에 where 절에 Datasourceid을 포함하여이 작업을 수행 할 수 있습니다 더 많은 내가 더 내가 ThreadId 및 DatasourceId을 결합하는 복합 키를 사용하여 솔루션을 선호하는 거라고 생각해. 그게 Linq과 어떻게 작동합니까? 코드의 두 필드를 설정하여 DB에 저장하거나 스레드와 게시물간에 공유 DataContext가 필요합니까? – Shackles