문제

몇 달 전에 완료 한 프로젝트에 대한 기술 문서를 따라 잡는 과정에서 마무리에 가까워지고 있습니다. 저장소를 사용하여 데이터 액세스 계층을 모두 추출했으며 직장에서 Wiki에 패턴에 대한 짧은 요약을 작성했습니다.

이 요약을 작성하는 동안 두 번째로 약간 다른 접근 방식을 취했다는 것을 깨달았습니다.

하나는 명백한 것을 사용했습니다 InsertOnSubmit 메소드는 작업 단위 및 UOW 추적 변경과 암시적인 업데이트와 결합 된 방법입니다. 다른 하나는 a Save 새 항목을 삽입하고 기존 업데이트 된 방법 (UOW없이).

일반적으로 어떤 접근 방식을 선호 하시겠습니까? 일반적인 CRUD 시나리오를 고려하십시오. 각각의 대응 가능성은 어디에 있어야합니까?

도움이 되었습니까?

해결책

저장소가 작업 단위, 캐싱 또는 기타 관련 개념을 사용하는지 여부는 구현에 맡겨야한다고 생각합니다. 인터페이스가 도메인 모델과 일치하는 데이터 저장소와 비슷한 것을 선호합니다. 따라서 고객 저장소가 다음과 같이 보일 수 있습니다.

interface ICustomerRepository
{
    Customer Load(int id);
    IEnumerable<Customer> Search(CustomerQuery q);
    void Save(Customer c);
    void Delete(Customer c);
}

이것은 nhibernate와 같은 Nhibernate.linq, 직접 SQL 라이브러리 또는 XML 또는 Flat-File Store와 같은 Nhibernate와 같은 내용으로 쉽게 구현할 수 있습니다. 가능하면 저장소 이외의 트랜잭션 개념을 유지하는 것이 좋습니다. 또는 몇몇 저장소의 운영이 단일 트랜잭션의 일부가 될 수 있도록보다 글로벌 범위에있어서 더 좋습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top