2013-08-22 1 views
4

Linq와 그립을 잡기 위해 질문을 잘못하고있을 수도 있습니다. 나는 해결책을 찾았고, 내가 상상 한 유일한 것은 상속이 대답 일 가능성이 있지만,이 경우에 그것을 어떻게 사용할 것인지 잘 모른다. 나는 C#을 사용하고 있고 같은 테이블에 대한 클래스를 만들었습니다 : 나는 여러 테이블 (예를 들어 CommonDocumentData1800, CommonDocumentData1900, CommonDocumentData2000)가linq 테이블 매핑에서 단일 클래스에 여러 테이블 할당

[Table(Name = "CommonDocumentData1800")] 
public class CommonDocumentRecordData 
{ 
    [Column] 
    public string RecordID; 
    [Column] 
    public int? StartYear; 
    [Column] 
    public int? EndYear; 
    [Column] 
    .... 
} 

,하지만 난 다른과 클래스를 반복하기보다는 같은 클래스를 사용하려면 이름. 이 문제를 어떻게 처리합니까?

+2

나는이 질문 LINQ''와 아무 상관이 있다고 생각하지 않습니다. –

+0

모든 테이블에 동일한 필드가 있습니까? – Ehsan

+2

투표가 불공정하다. 나는 Linq를 잡으려고했다. 나는 그것이 합법적 인 질문이라고 생각했을 것이다. 비록 그것이 Linq와 아무 상관이 없다고하더라도, 나는 여전히 문제를 해결하는 방법을 고맙게 생각할 것이다. –

답변

0

linq 쿼리에 여러 개의 enumerable을 포함 할 수 있습니다. 당신의 CommonDocumentRecordData 객체의 이식하기 위해 당신이 할 수 있습니다 :

var allTables = (from t1800 in CommonDocumentData1800.AsEnumerable() 
       select new CommonDocumentRecordData 
       { 
       RecordID = t1800.Field<string>("RecordId"), 
       StartYear = t1800.Field<int>("StartYear"), 
       EndYear = t1800.Field<int>("EndYear") 
       }).Union(
       from t1900 in CommonDocumentData1900 
       //and so on 
       ); 
+0

'CommonDocumentData1900'을 모델의 어떤 클래스에 어떻게 맵핑합니까? 이것은 'CommonDocumentData1800','CommonDocumentData1900' 등과 같은 동일한 구조의 여러 클래스를 정의한 경우에만 작동하며 OP가 원하는 것은 아닙니다. –

+0

이 문제를 해결하는 방법은 여러 가지가 있습니다. 동일한 스키마를 가진 논리적으로 세분화 된 테이블 인 것 같습니다. 아마도 이것을 처리하는 가장 깨끗한 방법은 데이터베이스에서 볼 수있는 방법 일 것입니다. 그런 다음 뷰 객체에 모델을 만들면이 중 아무 것도 필요하지 않습니다. 엔티티 데이터 모델을 사용하고 있다면,이 모든 클래스를 만들 것이며, 기본 데이터 모델을 제어 할 수 없다면 스플 라이스를위한 몇 가지 추가 로직을 원할 것입니다. - 귀하의 주장에 대답하십시오 : 귀하의 쿼리에서 속성 할당을 사용자 정의 할 수 있기 때문에 동일한 스키마가 필요하지 않습니다. – mrtig

+0

@KingKing : 다음과 같이 생각합니다. http://blogs.msdn.com/b/adonet/archive/2007/03/15/inheritance-in-the-entity-framework.aspx In Entity 데이터 모델에서 이와 같은 경우를 처리하기 위해'TableMappingFragment'를 정의 할 수 있습니다. – mrtig

관련 문제