2010-04-13 4 views
0

ASP.NET MVC 2 및 Entity Framework를 사용하여 리포지토리 패턴을 구현하려고하지만이 프로세스에서 몇 가지 문제가 있습니다.리포지토리 패턴 및 엔터티 프레임 워크

먼저 Order와 Product와 같은 관계가있는 엔티티가 2 개 있습니다. dbml 파일을 생성 할 때 클래스 을 "ProductSet"과 하나의 클래스를 매핑하는 속성 Product으로 주문합니다.이 제품은 해당 제품과 관련한 순서로 매핑됩니다.

그래서 기본 CRUD 작업으로 IReporitory와 같은 저장소 패턴을 만들고 내 컨트롤러에 ProductRepository 또는 OrderRepository를 구현합니다. 나는 제품을 만들려고 그 위에 내 주문을 할당해야 할 때

문제

는 그 작업이 좀 이상한 행동을했다 ProductOne.Order = _orderRepository.Find(orderId);

처럼 발생하고 나는 그것을 잘못 무엇인지 찾을 수 없습니다.

+3

* 이상한 행동 *으로 무슨 뜻인지 정의하십시오. –

+0

이미 다린, 고맙습니다. Strange Behavior를 통해 내가 원했던 것은 관련 엔터티에 대한 일부 변경 사항에 대해 다른 유형의 예외가 발생했다는 것입니다. 그 외에도, httpcontext 공유 변수를 사용하여 다른 대답에서 설명한 방법으로 문제점을 해결했습니다. – user319923

답변

2

질문에 다소 부족한 부분이 있지만 내 생각에 두 저장소에서 하나가 아닌 두 개의 ObjectContext를 사용하고있는 것 같습니다. 단일 웹 요청에 범위를두기 위해 ObjectContext의 수명을 관리하고 해당 웹 요청주기의 수명 동안 하나의 ObjectContext 만 갖기를 원할 것입니다.

Google에서 'web scoped objectcontext'또는 'objectcontext lifetime'을 검색합니다.

http://dotnetslackers.com/articles/ado_net/Managing-Entity-Framework-ObjectContext-lifespan-and-scope-in-n-layered-ASP-NET-applications.aspx

+0

Thx for info Hightechrider, 정확히 문제이지만, 저장소 패턴의 초보자입니다.이 패턴을 제어하는 ​​방법을 알지 못합니다. 아마도 싱글 톤 패턴을 가지고 있을지 모르겠습니다. 누구든지 내가 할 수있는 몇 가지 예를 들어 있습니까? – user319923

+0

ObjectContext 수명을 관리하는 방법을 보여주는 기사에 대한 참조를 추가했습니다. 웹 요청 수명에 적용하면 IMHO가 잘 작동합니다. –

+0

Thx 대단히 Hightechrider. – user319923

관련 문제