2010-08-05 5 views
2

Entity Framework 및 저장소 패턴이있는 MVC 응용 프로그램을 사용하려고합니다. 이 응용 프로그램에서 최종 사용자는 세션 중에 여러 HTTP 요청을 통해 다른 엔터티 데이터를 수정할 수 있습니다. (마법사 페이지의 종류) 그러나 최종 커밋 버튼을 클릭 할 때까지 이러한 수정 작업을 수행합니다. 여기에는 퇴장 옵션도 있으므로이 경우 작업을 롤백해야합니다.Entity Framework ObjectContext : 동시성

두 가지 용도가 동일하고 둘 중 하나가 커밋 단추를 클릭하면 어떤 일이 벌어 질지 궁금합니다. 두 사용자가 변경 한 사항이 커밋 된 것 같습니다.

는 제가 지속을 위해 초기에 한 번 데이터를 가져 오는 한 번만 귀하의 의견은 매우

답변

1

환영 문맥을 사용할 필요가있는 사용자 연결하거나 세션 하여 개체 컨텍스트를 만들 필요가 같아요.
(수명이 긴 '다중 http 요청'컨텍스트 없음).

은 그래서 당신이 할 것은 이것이다 :

  1. 것은, 컨텍스트를 만들고 데이터를 가져, 문맥 폐기하십시오.
  2. 원하는대로 (문맥을 사용하지 않고) 여러 요청에 대한 데이터의 사용자 변경을 관리합니다 (예 : 세션, 숨겨진 필드 등
  3. 컨텍스트 만들기, 수정 된 엔터티 유지, 컨텍스트 삭제.

2 단계에 관해서 - I 추천 사용자 상호 작용에 대한 Views 특정 개체 (ViewModels)보다는 EntityObjects을 사용.

+0

Yakimych, 귀하의 의견에 너무 감사드립니다. 그러나 EF ObjectContext에서 제공하는 변경 내용 추적을 활용하면 안된다는 제안을하고 있습니까? 그렇다면 왜 그렇습니까? – user385411

+2

당신의 경우에는 아닙니다. ObjectContext는 UnitOfWork입니다. 스레드로부터 안전하지 않으며 가능한 한 수명이 짧습니다. 웹 요청이나 여러 사용자에 대해 동일한 ObjectContext를 사용하면 많은 문제가 발생할 수 있습니다 (하나는 질문에서 언급 한 것 중 하나). 일부 EF 상태 추적 기능을 사용하려면 자체 추적 엔티티를 살펴보십시오. – Yakimych

관련 문제