2010-04-28 6 views
0

동일한 열 집합을 가진 두 개의 테이블이 있습니다. 객체의 "유형"에 따라 값은 두 테이블 중 하나에 저장됩니다. 이 두 테이블에 액세스하기 위해 공통 코드를 사용하고자합니다.linq-to-sql을 사용하여 쿼리 된 테이블을 전환하는 방법

"raw SQL"을 사용하는 경우 String.Format()을 사용하여 테이블 이름을 변경할 수 있습니다.


두 개의 별도의 테이블이 데이터 액세스 패턴으로 필요하다 (마찬가지로 업데이트 등을위한)

은 두 테이블에 일반적인 쿼리에 대해 매우 다른 따라서 서로 다른 인덱스가 필요하다. 테이블을 단일 테이블처럼 보이게 만드는 "뷰"및 "트리거 대신"등은 여기서는 좋아하지 않습니다. 많은 고객들이 SqlServer의 로우 엔드 버전을 사용하므로 파티션 테이블을 사용할 수 없습니다.


업데이트 : 내가 가지고있는 문제의

일부는 내가 우리가 (

IQueryable<Event> AddFlexibleFieldsFilter(
    FlexibleFields flexibleFields, 
    IQueryable<Event> qry, 
    IQueryable<EventFlexibleField> fields 
    ) 

같은 방법을 많이하고 서브 클래스를 사용하거나 인터페이스는 일반적인 유형과 잘 재생되지 않는다는 것입니다 여전히 .net 3.5)

답변

0

슬프게도 쉬운 방법이 없습니다. 두 개의 XML 매핑을 만든 다음 런타임에 명시적인 DataContext constructor을 통해 적절한 매핑을로드 할 수 있습니다. 관련 링크 :

이 의지 확실히 더러운 업 당신의 LINQ에-SQL 로직 당신은 당신이 만들기 전에 작업중인 유형을 결정해야합니다으로 귀하의 DataContext.

유형에 따라 적절한 소스에서 데이터를 가져 오는 마스터 클래스가있는 두 테이블에 매핑 된 두 개의 데이터 액세스 클래스가 있다고 생각할 수 있습니다. 그런 다음 개발자는 데이터의 출처에 대해 걱정하지 않고 마스터 클래스를 사용할 수 있습니다.

+0

감사합니다. 마스터 클래스를 사용하지 않으면 잘 작동합니다. 질문에 대한 편집을 참조하십시오. –

관련 문제