2012-05-17 2 views
0

엔터티 프레임 워크를 사용하여 데이터베이스 엔터티의 컬렉션을 ObservableCollection에 할당 할 수 있습니까?EF LINQ 문을 통해 Observable 컬렉션을 할당하는 방법

이것은 i가 지금까지 시도한 것입니다. 생성자를 사용하여 ObsrvableCollection으로 목록을 변환하려고 시도했지만 LINQ는 매개 변수를 허용하는 생성자를 허용하지 않습니다.

Toenservable 컬렉션이라는 Ienumerable 확장명을 만드는 중입니다. EF 인식하지 못합니다.

다른 멋진 해결책이 있습니까? 아래 내가 사용하고있는 코드입니다 ... 그리고 PayInfofield는 관찰 가능한 모음입니다

using (var db = new clientEntities()) 
{ 
       var data = from p in db.CLIENTs 
          select new Contracts.Client() 
             { 
              ClientID = p.CLIENT_ID, 
              FirstName = p.FIRST_NAME,           
              PayInfo = new ObservableCollection<PayInfo>(p.PAY_INFO.Select(n=> new PaymentInfo(){ 
               PayID=n.ID              
               })) 
             }; 
    } 

실패합니다. 임시 변수를 사용하지 않고 우아하게 지정할 수 있습니까?

답변

2

일반 LINQ를 사용하는 Entities/SQL에 LINQ를 혼동하는 것처럼 들립니다. EF를 사용할 때는 작성한 LINQ 쿼리를 SQL로 변환해야한다는 것을 기억하십시오. 따라서 SQL 데이터베이스에서 반환 된 데이터에서 수행해야하는 개체 변환은 EF에서 직접 지원해야합니다. 여기에는 ToList(), ToArray() 등이 있지만 사용자 정의 확장은 포함되지 않습니다.

내가 할 수있는 최선의 방법은 먼저 데이터베이스에 쿼리 (쿼리를 실행하도록 ToList()를 사용할 수 있음)하고 ObservableCollection의 생성자에서 결과 목록을 사용하거나 ToObservableCollection() 확장 메서드를 호출하는 것입니다. .

+0

감사합니다 ...하지만 내 문제는 조금 다릅니다 ... 나는 모든 것을 할 수 있다는 것을 알고 있습니다 ... 나는 그것을 할 수있는 깨끗한 방법을 원합니다 ... 해결책 u는 목록 및 관찰 가능한 컬렉션으로 이동합니다. 내 계약에서 2 속성을 의미합니다 ... 또는 Contracts.Client 정확히 동일한 속성을 보유하는 다른 클래스를,이 방법을 피하기 위해 찾고있다. – Mulki

관련 문제