我正在查看一个名为Automapper的库。我对此有一些担忧:
我们不想暴露我们的数据模型(好)。为什么数据模型应该与您的数据库非常相似?
使用轻量级 DTO 而不是您的实体。(好的)
现在我需要将我的实体映射到这些 DTO。我尊重 DRY 原则吗?
我正在查看一个名为Automapper的库。我对此有一些担忧:
我们不想暴露我们的数据模型(好)。为什么数据模型应该与您的数据库非常相似?
使用轻量级 DTO 而不是您的实体。(好的)
现在我需要将我的实体映射到这些 DTO。我尊重 DRY 原则吗?
有人可能会争辩说 DTO 违反了 DRY,但如果这对您的情况有意义,那么我不会三思而后行。
与大多数编程最佳实践一样,DRY 并不是灵丹妙药。有时你必须妥协。在这种情况下,我认为违反 DRY 是完全可以接受的,以防止将您的域详细信息泄露给不需要它的调用者(例如 N+1 延迟加载性能问题)。
取决于应用程序。事务应用程序,根据业务逻辑要求,将数据模型暴露给上层代码对于一定规模的项目是有意义的。我认为 DRY 变得越重要,应用程序越大,但我对您提出这个问题的背景了解不够。