Entity Framework (.NET 3.5)를 사용하는 WPF 응용 프로그램을 개발하는 중입니다. 그것은 여러 곳에있는 엔티티에 액세스합니다. 엔티티와 관련하여 애플리케이션 전반에 걸쳐 일관성이 우려됩니다. 내 다른 견해에서 별도의 컨텍스트를 인스턴스화해야합니까, 아니면 전 세계적으로 액세스 할 수있는 단일 컨텍스트를 사용해야합니까 (그리고이 작업을 수행하는 좋은 방법입니까?).WPF 응용 프로그램의 전역 엔터티 프레임 워크 컨텍스트
예를 들어, 내 엔티티 모델에는 출하 (하위 패키지 및 추가 하위 컨텐츠 포함), 회사/연락처 (하위 주소 및 전화 사용) 및 디스크 스펙의 세 섹션이 있습니다. Shipments 및 EditShipment보기는 DiskSpec에 액세스하고 OptionsView는 DiskSpecs (작성, 편집, 삭제)를 관리합니다. DiskSpec을 편집하는 경우 별도의 컨텍스트가있는 경우 ShipmentsView에서 최신 사양을 검색해야합니다.
앱의 나머지 부분이 객체를 가져 오는 전체적인 컨텍스트를 갖는 것이 안전하다면 이동하는 것이 바람직하다고 생각합니다. 그렇다면 그 인스턴스는 어디에 놓이게 될까요? VB.NET을 사용하고 있지만 C#에서 변환 할 수 있습니다. 어떤 도움을 주시면 감사하겠습니다.
나는 단지 사용자가 새로운 데이터를 얻기 위해 앱의 다른 부분에서 12 번 다시로드해야하는 애플리케이션 중 하나를 원하지 않습니다.
- 모든 상황이 더 이상 필요 후 폐기하지 않으려면 블록을 사용하여 만들어집니다
는 업데이트 : 다음과 같이
확인 그래서 난 내 응용 프로그램을 변경했습니다.
- 로드되면 모든 항목이 삭제되기 전에 모든 항목이 컨텍스트에서 분리됩니다.
- MainViewModel (ContextUpdated)의 새 속성은 해당 ViewModels RefreshEntities 메서드를 실행하는 다른 모든 ViewModel에 가입하는 이벤트를 발생시킵니다.
- 이것을 구현 한 후에 엔티티는 한 번에 하나의 ChangeTracker에 의해서만 참조 될 수 있다는 오류가 발생하기 시작했습니다. 어떤 컨텍스트가 여전히 엔티티를 참조하고 있는지 파악할 수 없으므로 (컨텍스트가 올바르지 않아야합니까?) IEntityWithChangeTracker로 객체를 캐스팅하고 SetChangeTracker를 nothing (Null)로 설정합니다.
이 현재 문제에하자있다 : 나는 엔티티에 changeTracker을 NULL, 다음 상황에 첨부 할 때,이 상태가 바뀌 잃고 데이터베이스에 업데이트되지 않습니다 . 그러나 변경 추적기를 null로 설정하지 않으면 첨부 할 수 없습니다. 내 자신의 변경 추적 코드가 있으므로 문제가되지 않습니다.
내 새로운 질문은 어떻게해야할까요? 좋은 예 엔티티 질의와 엔티티 저장 코드가 잘려나 간다면 먼 길을 갈 것입니다. 왜냐하면 제가 생각하기에 단순히 일할 단순한 트랜잭션을 얻으려고 노력하고 있기 때문입니다.
당신이 downvote면, 나는 설명을 좋아할 것입니다. 적어도 그것은 길 아래로 더 이상하지 말아야 할 일을 알려 줄 것입니다. – CodeWarrior