2010-03-12 3 views
1

Entity Framework 4를 시작하면서 EF4를 더 잘 이해하기 위해 WPF 데모 응용 프로그램을 작성할 준비가되었습니다. 내 LINQ 쿼리는 IQueryable<T> 반환하고 난 다음 코드와 함께 ObservableCollection<T>에 사람들을 삭제할 수 있습니다 알고 그 시점에서WPF가 Entity Framework ObjectContext를 손상합니까?

IQueryable<Foo> fooList = from f in Foo orderby f.Title select f; 
var observableFooList = new ObservableCollection<Foo>(fooList); 

, 내가 관찰 컬렉션에 내보기 모델의 해당 속성을 설정할 수 있으며, 그럴 게요 뷰와 뷰 모델 속성간에 WPF 데이터 바인딩을 가져옵니다.

여기 내 질문입니다 : 관찰 가능 컬렉션에 내 foo 목록을 이동할 때 ObjectContext를 중단합니까? 다른 방법으로 말하자면, ObjectContext를 적절하게 처리한다고 가정하면, EF4가 모델과 데이터베이스를 적절하게 업데이트 할 수 있습니까?

내가 묻는 이유는 이것이다. NHibernate는 컬렉션 레벨에서 객체를 추적한다. NHibernate IList<T>을 관찰 가능한 컬렉션으로 이동하면 NHibernate의 변경 추적 메커니즘이 깨집니다. 즉, NHibernate가 WPF와 함께 작동하도록하기 위해 매우 복잡한 객체 배치를해야한다는 것을 의미합니다. 나는 모든 것을 없애기위한 방법으로 EF4를보고있다.

WPF로 작업하는 EF4를 얻으려면 IQueryable<T> 결과를 ObservableCollection<T>에 넣는 것만 큼 간단합니다. 그것은 내 EDM 엔터티 개체에 대한 변경 내용 추적을 유지합니까? 당신의 도움을 주셔서 감사합니다.

답변

3

ObservableCollection을 ObjectContext와 동기화해야합니다. 이 작업을 수행하면 WPF Application Framework (WAF)의 BookLibrary 샘플이 표시됩니다. EntityObservableCollection을 찾으십시오.

+0

정말 대단합니다! 감사. –

+0

+1하지만 entitySetName에 대한 마법 문자열이 필요하다는 것은 불행한 일입니다. 리팩토링을 어렵게 만듭니다. – Stuart