0

EF를 사용하여 응용 프로그램에서 UnitOfWork 및 Repository 패턴을 사용했습니다.UnitOfWork + 리포지토리 패턴 및 Entity Framework 가장 {

실제로 내 디자인은 UnitOfWork가 ObjectContext 클래스를 만들고 Repository concrete 클래스를 주입한다는 것을 제공합니다. 예를 들면 :

UnitOfWork.cs (초기화)

public DefaultUnitOfWork() { 
    if (_context == null) { 
     _context = new MyDataContext(ConfigSingleton.GetInstance().ConnectionString); 
    } 
} 

UnitOfWork.cs (저장소 인스턴스를 받고)

public CustomerRepository Customers { 
    get { 
     if (_customers == null) { 
      _customers = new CustomerRepository(_context); 
     } 
     return _customers; 
    } 
} 

저장소 클래스가 이미 정의되어이 방법 ObjectContext를 데이터를 검색하고 업데이트하는 메소드를 사용할 수 있습니다. 이것은 훌륭하게 작동합니다.

이제 응용 프로그램 풀 ID를 가장 한 쿼리를 실행해야합니다. 그래서 가장 내에서 UnitOfWork 생성자에서 코드를 래핑하기로 결정했습니다.

ObjectContext은 리포지토리 생성자에 전달되어 나중에 리퍼 지스터 클라이언트가 호출 할 때 사용합니다 (예 : FindAll()).

실제로 데이터베이스에 대한 실제 연결은 Entity Framework에서 쿼리를 수행하기 전에 이루어졌으며 정확히 ObjectContext을 만들지는 않았습니다.

이 문제를 어떻게 해결할 수 있습니까?

답변

0

예를 들어 연결 문자열과 같은 다른 작성 기준을 사용하여 하나 이상의 ObjectContext 팩토리 (ObjectContext 생성)를 사용할 수 있습니다. UnitOfWork는 팩토리를 활용하여 컨텍스트를 가져올 수 있기 때문에 리포지토리도 될 수 있지만 리포지토리와 다른 ObjectContext를 사용하는 경우 UnitOfWork의 핵심을 놓친 것 같습니다.

UnitOfWork는 여러 리포지토리를 쉽게 활용할 수있는 함께 완료되어야하는 하나 이상의 작업으로 구성되어야합니다. 리포지토리가 UnitOfWork와 별개의 ObjectContext를 가지고 있다면, UnitOfWork를 커밋하는 것이 그 목적을 달성하는 방법을 알지 못합니다.

나는 귀하의 질문을 완전히 잘못 이해했거나 적절한 세부 사항을 빠뜨린 것 같습니다. 행운을 빕니다!