작업 단위 및 L2S DataContext
-
06-07-2019 - |
문제
빠른 Q 당신을위한 패턴 전문가.
아직 결정하지 않았으며 유연하기를 원하기 때문에 실제 데이터 액세스 기술에서 연결된 저장소 패턴을 원합니다. 따라서 이것은 L2S, L2E, Nhibernate, Lightspeed 또는 무엇이든 일 수 있습니다.
그러나 나는이 단위에 대해 혼란스러워합니다.
L2S 세계에서 이것은 귀하의 데이터 컨텍스트 인 것 같습니다.
그러나 L2가 아닌 세계는 어떻습니까? 예를 들어 손으로 쓴 SQL을 사용하고 있다고 상상해보십시오.
내 질문은 누가 무엇을합니까? 내 repo.save () 메소드에서 필요한 삽입/업데이트 SQL을 생성하는 initofwork.commit을 호출해야합니까?
확실한 답을 기대하지는 않지만, 내가 올바른 길을 가고 있는지 확인하기 위해 약간의 토론이 좋을 것입니다!
감사
해결책
리포지토리는 확실히 작업 단위에서 커밋/저장/제출을 호출하거나 소비자에게 맡길 수 있습니다. 소비자가 작업 인스턴스의 수명을 제어 할 수 있으므로 소비자가 여러 리포지토리를 참여시킬 수 있기 때문에 후자의 시나리오를 선호합니다.
// outside the repository layer
// int productId defined elsewhere
// int quantity defined elsewhere
IUnitOfWork unitOfWork = ... instantiate/get a new instance of your DataContext ...
ProductRepository productRepository = new ProductRepository(unitOfWork);
Product product = productRepository.GetById(productId);
Order order = new Order();
order.AddOrderLine(product, quantity);
OrderRepository orderRepository = new OrderRepository(unitOfWork);
orderRepository.Add(order);
unitOfWork.Save(); // This calls SubmitChanges() on the DataContext
제휴하지 않습니다 StackOverflow