Mam więc DAO, DTO i BO. Poniższy kod jest wynikiem:Rozdzielanie obaw - DAO, DTO i BO
// Instantiate a new user repository.
UserRepository rep = new UserRepository();
// Retrieve user by ID (returns DTO) and convert to business object.
User user = rep.GetById(32).ToBusiness<User>();
// Perform business logic.
user.ResetPassword();
user.OtherBusinessLogic("test");
user.FirstName = "Bob";
// Convert business object back to a DTO to save to the database.
rep.Save(user.ToDataTransfer<Data.DTO.User>());
Więc staram się oddzielić obawy, ale chcę, aby pozbyć się „nawróconych” w tym kodzie. "Przekształcenia" są faktycznie zlokalizowane w warstwie logiki biznesowej (warstwa DTO nic nie wie o warstwie logiki biznesowej) jako obiekt rozszerzenia. DTO sam oczywiście przechowuje dane i nie ma logiki biznesowej co-tak-kiedykolwiek. UserRepository wywołuje DAO i na końcu GetById używa AutoMappera do mapowania z DAO do DTO. "Konwertyci" (ToBusiness i ToDataTransfer) robią dokładnie to, co mówią.
Mój współpracownik pomyślał, że może muszę mieć repozytorium biznesowe, ale pomyślałem, że może to być trochę niezgrabne. jakieś pomysły?
Dzięki za odpowiedź. Pomocny mógłby być dowolny przykładowy kod, który mógłbyś podać. –
Zgadzam się z tym. Powinieneś odzyskać swój obiekt biznesowy i jeśli chcesz przekonwertować go na DTO, konwersja może nastąpić za pomocą narzędzia takiego jak AutoMapper. –