저는 MVP와 Entity Framework 세계에 새로운 편입니다.EF ObjectContext, 서비스 및 저장소 - 컨텍스트 수명 관리.
현재보기 + 발표자 조합이 있으며보기에는 수정 및 삭제라는 두 가지 이벤트가 있으며 발표자는이 이벤트를 수신합니다. 또한 서비스 개체와 저장소가 설정되어 있습니다. 서비스 층 구성의 순서는 (아래에있는 하나의 상단 오브젝트에 통과 그래서 ObjectContext를 가지고 어떤 저장소 구현 취
ObjectContext
|
V
Repositries
|
V
Service Object
|
V
Presenter
을 이제 문제임 I는 상단 오브젝트 컨텍스트를 만들면 발표자가 살아있는 동안 편집과 삭제가 서비스에서 동일한 컨텍스트 인스턴스를 사용한다는 것을 의미합니다.
따라서 ServiceObject.Delete 및 ServiceObject.Edit를 호출하면 변경 내용 추적을 관리하기가 어려워지는 동일한 컨텍스트가 사용됩니다. 내가 알기로 컨텍스트는 실제로 단편적이어야하며 작업 단위에만 해당됩니다. 편집 및 삭제는 모두 서로 다른 작업입니다.
엔티티 프레임 워크로 DI를 수행하고 컨텍스트 수명을 어떻게 관리합니까?
저는 사람들이 단지 리포지토리의 객체 컨텍스트를 새로운 것으로 보았습니다. 이것은 좋은 패턴입니다. 나는 그런 식으로 그것을 할 경우
ServiceObject{
public void Edit(// some args) {
Using(var context = new MyObjectContext) {
var repo = new MyRepo(context);
var entity = repo.GetForID(12);
// Do some stuff for edit
context.SaveChanges();
}
}
}
하지만 더 이상 ServiceObject의 생성자에 내 저장소를 전달하고 :(DI를하고 있지 않다 :
가 아니면 서비스 객체에 뭔가처럼 그렇게 없습니다.
나는이 상황에서 무엇을 할 수 있습니까?
이사람이이 문제를 나에게 도움이 될 수 있습니다 내가 그 볼 수있는 오픈 소스 프로젝트를 알고 있나요.
감사합니다.
그 좋은 uuh :
여기 IUnitOfWork의 단순화 구현입니다! – Roubachof