2013-09-04 5 views
0

메신저 엔티티 framewok을 사용하며 문제가있는 사용자.Entity Framework ToList 메서드 TSource

List<MixedArticle> lstMxa=new List<MixedArticle>(); 

Model.BlogDBEntities bdbe = new Model.BlogDBEntities(); 
       SqlParameter sp = new SqlParameter("@count", count); 
       object[] parameters = new object[1] { sp }; 

       lstMxa = bdbe.Database.SqlQuery<Facade.MixedArticle>("select * from fn_GetLastXArticles(@count)", parameters).ToList(); 

하지만 난 등과 같은 방법을 toList 사용할 수 있습니다 내가 데이터를 얻을 때

, 난 반환하는 클래스를 생성하고 엔티티 프레임 워크는 다음과 같이 내 수업의 종류를 반환 한 모델 class.so을 입력 사용하지 말아

lstMxa=bdbe.Articles...where(x=x.Count==count).ToList<Facade.MixedArticle>(); 

이렇게하면 시각적 스튜디오가 거부하고 TSource가 아니었다 고 말하면서.

그래서 ToList() 메소드는 어떻게 사용합니까?

lstMxa = bdbe.Articles 
    .Where(x => x.Count == count) 
    .Select(x => new Facade.MixedArticle 
    { 
     SomePropertyInMixedArticle1 = x.SomeProperty1, 
     SomePropertyInMixedArticle2 = x.SomeProperty2, 
     // etc. 
    }) 
    .ToList(); 

당신은 또한 데이터베이스에서 전체 Article 개체를로드 한 후 필요한 매핑 할 수 있습니다 :

답변

2

당신은 데이터베이스에 Articles 테이블에서 MixedArticle에 당신이 가지고있는 속성을 선택하는 투영 사용할 수 있습니다 속성을 MixedArticle (예 : AutoMapper 같은 도구 사용) 이상. 그러나 Select의 프로젝션 이점은 MixedArticle에서 실제로 필요로하는 것보다 데이터베이스에서 더 많은 열 값을로드하지 않는다는 것입니다.하지만 비용 부담으로 Select 표현식에서 모든 속성을 수동으로 나열하고 할당해야합니다.