所以我有一个 DAO、DTO 和 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>());
所以我试图分离关注点,但我想摆脱这段代码中的“转换”。“converts”实际上作为扩展对象位于业务逻辑层(DTO 层对业务逻辑层一无所知)。DTO 本身显然只存储数据,没有任何业务逻辑。UserRepository 调用 DAO 并在 GetById 结束时使用 AutoMapper 从 DAO 映射到 DTO。“converts”(ToBusiness 和 ToDataTransfer)完全按照他们说的做。
我的一位同事认为我可能必须拥有一个业务存储库,但认为它可能有点笨拙。有什么想法吗?