2010-04-14 1 views
2

나는 Database File System을 개발 중입니다. 내가 사용하고 -Entity Framework 3.5 및 MVVM을 사용하는 리포지토리 패턴 - 어디서나 동일한 컨텍스트를 공유해야합니까?

  1. 닷넷 프레임 워크 3.5
  2. 엔티티 프레임 워크 3.5
  3. WPF MVVM 패턴

이 프로젝트는 여러 어셈블리에 걸쳐 각각 사용하여 동일한 모델에 걸쳐으로.

하나의 어셈블리를 "서버"라고 부르겠습니다. 동일한 모델 인 EF를 사용하여 데이터베이스에 데이터를 추가합니다. 다른 어셈블리 (UI 포함)는 데이터 읽기 및 쓰기 작업을 모두 수행합니다. 다른 어셈블리.

데이터베이스는 각 엔티티가 하나의 부모를 가질 수도 있고 어떤 자식을 가질 수도있는 자체 참조 테이블을 포함합니다. 나는이 계층적인 특성을 다루기위한 메커니즘을 제공 할 수있는 저장소 패턴을 사용하고자한다.

나는 이미 Code Project에서이 기사를 읽었습니다. 그것은 동일한 컨텍스트 (엔티티)를 모든 곳에서 공유합니다.

내 질문은 - 어디서나 동일한 컨텍스트를 공유해야합니까? 그 이점과 단점은 무엇입니까?

+0

중복, 여러 번 이상 : http://stackoverflow.com/questions/1169188/ef-objectcontext-service-and-repositry-managing-context-lifetime http : // stackoverflow. com/questions/1251917/reuseable-objectcontext-or-new-objectcontext-for-each-set-of-operations http://stackoverflow.com/questions/1949037/entity-framework-objectcontext-in-windows-wpf-silverlight -application http : // stackoverflow.com/questions/506258/objectcontext-memory-consumption-and-performance http://stackoverflow.com/questions/2433591/does-wpf-break-anity-framework-objectcontext –

+0

죄송합니다 ... 나쁘다! –

답변

4

WPF Application Framework (WAF)의 BookLibrary 샘플은 함께 WPF MVVM과 엔티티 프레임 워크를 사용하는 방법을 보여줍니다. 레이어를 개별 어셈블리로 분리합니다.

어쩌면 그게 당신이 찾고있는 것입니다.

0

필자는 objectcontext가 필요할 때 사용되어 져야한다는 것을 알고 있습니다. 그래서 필요할 때 작업 단위를 만들기 위해 작업 단위의 단위와 함께 작업 단위의 단위로 포장하고 싶을 것입니다.

"어셈블리"의 변경 사항을 반영하는 엔티티에 대한 질문까지. 것은 당신의 객체가 어셈블리에 존재하지 않는다는 것입니다. 그들은 메모리에 존재합니다.

변경 사항을 애플리케이션 전체에 반영하려면 전체 애플리케이션에서 동일한 객체에 대한 참조를 유지해야합니다. 또는 엔티티 또는 엔티티 집합이 변경되면 알림 시스템을 구현하여 앱의 다른 쪽이 데이터를 알아 차리고 새로 고칩니다.

단일 컨텍스트를 유지하는 단점은 개체 컨텍스트에서 쿼리를 수행 할 때마다 db에서로드 된 엔터티와 함께 ​​커집니다. 장기 실행 응용 프로그램에서 이것은 많은 메모리 소비로 변환됩니다.

언제나 새로운 컨텍스트를 사용할 때의 단점은 repo를 호출 할 때마다 새로운 데이터 사본이 제공된다는 것입니다. 이제는 repo의 유일한 관심사는 데이터 저장 /로드가되어야하기 때문에 문제가되지 않습니다. 레이어간에 동시성 또는 데이터 중복을 처리하지 않음