DDD에 대해 알아 보려면 http://code.google.com/p/ndddsample에서 훌륭한 NDDDSample 소스를 찾고 있습니다. 뭔가 혼란 스러워요DDD 샘플 : CargoRepository.Store()를 컨트롤러에 사용할 수 있습니까?
CargoRepository는 BookingService.AssignCargoToRoute()와 CargoTrackingController.Search (에 의해 호출되는 찾기() 메소드)가 있습니다
Cargo cargo = CargoRepository.Find(trackingId);
CargoRepository도 BookingService에서 호출 스토어() 메소드가를 .AssignCargoToRoute() :
Cargo cargo = cargoRepository.Find(trackingId);
if (cargo == null)
{
throw new ArgumentException("Can't assign itinerary to non-existing cargo " + trackingId);
}
cargo.AssignToRoute(itinerary);
cargoRepository.Store(cargo);
내 혼란은 BookingService.AssignCargoTo에서 비즈니스 로직을 우회 할 CargoRepository.Store()를 호출에서 CargoTrackingController을 중지 아무것도 없을 것 같다이다 경로()
DDD에서 허용되는 이유는 무엇입니까? 저장소를 두 개로 분할해야 하나는 응용 프로그램/ui/domain/service에 대한 읽기 용이고 하나는 도메인/서비스 용 쓰기 용입니다.
도메인 객체를 잘못된 방식으로보고 있습니다. 나는 OEntity를 호출 할 것이라고 생각 했었습니다 .OEntity.DoSomething (x)를 호출 한 다음 oEntity.Save()를 호출했습니다.하지만 이것은 단일 책임 원칙을 잘못 위반하는 엔티티에 대한 지속성의 책임을 나쁘게 만듭니다. 엔터티는 자체적으로 작동하는 메서드 만 가지고 있어야하며 여러 엔터티가 단일 비즈니스 프로세스에 관련되는 경우 서비스가 만들어집니다. 나는 지금 감사의 이해를 더 얻고있다. 재미있는 물건, 고마워. –