2010-03-10 2 views
1

VS 2010 RC에서 EF4를 사용하여 Entity Framework를 시작하려고합니다. 지금까지 EDM을 만들고, LINQ to Entities를 사용하여 쿼리 한 다음 결과를 콘솔에 출력하는 간단한 콘솔 앱을 작성했습니다.MVVM에서 LINQ to Entity 결과 사용

이제 EF4를 WPF와 통합하는 방법을 배우기 위해 데모 WPF 응용 프로그램을 작성합니다. 내 WPF 애플 리케이션에서 MVVM을 사용합니다. 각보기 (다소간)에는 컨트롤이 바인딩되는 데이터 속성이 포함 된 뷰 모델이 있습니다. 예를 들어 내 WPF 데모 응용 프로그램에는 뷰의 드롭 다운이 바인딩되는 뷰 모델의 Customers 속성이 있습니다. 짐작 하시겠지만 제 EDM에는 Customer 엔티티가 포함되어 있습니다.

여기 내 질문입니다 : LINQ를 엔티티 결과와 내 뷰 모델 속성에 어떻게 연결합니까? 고객 엔터티에 대해 질의를하면 IQueryable<Customer>이 다시 나타납니다. 하지만 내 뷰 모델 속성은 데이터 바인딩이 작동하는 데 필요한 형식이 ObservableCollection<Customer>입니다. 그렇다면 IQueryable<Customer>에서 ObservableCollection<Customer>으로 어떻게 이동합니까? 당신의 도움을 주셔서 감사합니다.

답변

2

MSDN에 따르면 ObservableCollection 생성자는 List<T> 또는 IEnumerable<T> 일 수 있습니다. queryable이 귀하의 IQueryable<Customer> 인 경우 :

ObservableCollection<Customer> ocCustomer = new ObservableCollection<Customer>(queryable.ToList()); 
+0

이 내용을 확인해 보겠습니다. 이것은 간단하지만 NHibernate를 사용하면 콜렉션을 파손하면 더티 검사를 잃어 버리게됩니다. –

+0

보다 완벽한 답변은 여기에서 찾을 수 있습니다. http : //stackoverflow.com/questions/2433591/does-wpf-break-an-entity-framework-objectcontext. 기본적으로 ObjectContext는 WPF에 의해 관찰 가능 컬렉션에서 개체가 추가되거나 제거 될 때 업데이트되어야합니다. ObservableCollection 에서 파생 된 컬렉션 클래스를 사용하면 매우 간단합니다. –

관련 문제