2012-04-29 2 views
0

asp.net 및 C#을 사용하여 다국어 뉴스 포털 웹 사이트를 개발 중입니다. 현재이 사이트는 두 가지 언어를 지원하며 필요할 때 다른 언어로 확장 될 예정입니다. 따라서 사이트의 기본 프레임 워크를 만드는 것이 제 일입니다. 클라이언트 요구 사항에 따라 다른 언어의 웹 사이트 데이터베이스에 저장 될 내용이 다를 수 있습니다. 그래서 나는 다른 언어 (예 : tblNews_EN, tblNews_am 등)로 뉴스를 저장하여 영어 또는 암하라 어 언어의 콘텐츠를 저장하는 여러 테이블을 만들었습니다.동적 유형을 IQueryable에 <T> 런타임에 작성 #

최근 뉴스를 검색하는 클래스가 있지만 해당 클래스를 일반화하고 사용자가 요청한 특정 문화에 대한 최신 뉴스를 검색하려고합니다. 처음에는 tblNews_EN 테이블에서 최신 뉴스를 검색 할 수있는 다음과 같은 항목이 있습니다.

public IQueryable<GetNews> GetTopExtraNews() 
{ 

     var topExtraNews = from p in db.GetNews 
          where p.TopOrderPriority == 2 
          orderby p.NewsDate descending 
          select p; 
     return topExtraNews; 
} 

여기 GetNews는 tblNews_EN 테이블에 해당하는 Entity 클래스입니다.

이제는 선택한 문화권에 따라 다른 테이블의 개체를 반환하도록 일반화하고 싶습니다. 나는 IQueryable과 같은 것을 사용하려고 시도했으나 이것이 내 사건을 다룰 수있는 최선의 선택이라고 생각하지 않는다. 그래서, 이것을 할 수있는 더 좋은 선택이 있습니까?

+0

왜 Orchard CMS와 같이 이미이 작업을 수행하고있는 도구를 사용하고 있지 않습니까? –

답변

0

나는 모든 테이블이 똑같은 구조라는 것을 잘 압니다. 그 바탕으로

당신의 방법에 대한 매개 변수로 테이블을 보내고 쿼리에이 매개 변수를 사용

물론
public IQueryable<GetNews> GetTopExtraNews(typeofYourTable myTable) 
{ 

     var topExtraNews = from p in myTable 
          where p.TopOrderPriority == 2 
          orderby p.NewsDate descending 
          select p; 
     return topExtraNews; 
} 

올바른 언어 테이블에 myTable에 매개 변수를 설정해야합니다 당신의 방법을 호출하기 전에 .

+0

예 테이블 구조는 비슷합니다. 그러나 typeofYourTable 유형을 사용하는 방법을 모르겠다. 그걸 사용하는 법을 좀 더 보여 주실 수 있습니까? – semytech

+0

@semytech 예를 들어 DataTable과 같은 테이블을 참조하는 클래스의 실제 유형을 배치하려고했습니다. db.GetNews는 일종의 Type입니다. 메소드가 받아 들일 매개 변수의 종류를 정의하기 위해이 유형을 지정해야합니다. – Dummy01

+0

지금은 알지만 IQueryable에있는 과 db.GetNews는 하나의 테이블에만 해당됩니다. 나는이 함수를 호출 할 때 db.GetNews_EN과 같은 다른 유형을 전달해야합니다. 그래서 현재 시도하고 있지만 런타임에 다른 유형을 전달하는 방법을 알지 못하는 코드를 제공하겠습니다. – semytech

관련 문제