是否有一个通用的DDD模式来处理域对象的欠载?

Seb*_*n K 6 c# oop domain-driven-design ddd-repositories

有时在处理应用程序时,特别是在尝试遵循正确的OOD和DDD模式时,我们最终会使用域类,例如Customer.然后我们有一些存储库将加载这个对象,一切都很好,干净.

然后应用程序变得越来越复杂,我们开始优化性能.我们经常发现自己处于这样的情况,我们并不真正需要加载完整Customer对象的列表,但可能只是ID和名称,或者一小部分属性(例如,在网格中显示)

我经常看到的解决方案包括:

  1. 欠载域对象,所以基本上我们仍然会使用Customer类,但是我们将使用单独的存储库方法来加载那些,并且该存储库方法将从数据库仅加载必需的字段,并填充对象中的相应属性.剩余的Customer字段将保持默认值.这是一个简单的解决方案,但如果开发人员(或现有代码)希望加载某些属性,则可能导致许多错误.

  2. 目的,分级,我们创建类,如CustomerIdName,CustomerInfo,CustomerHeader只包含我们需要的属性.这种方法可以创建大量的类,但仔细的子类化是可行的.但它似乎从无处不在的领域语言概念中解脱出来.

那么在DDD世界中是否有一些普遍认同的惯例来处理这些问题?我试图谷歌这个,但无法找到任何权威.

或者它可能只是传统DDD方法的一个众所周知的限制,而CQRS或其他方法在这些情况下会更好?

coo*_*ool 5

我认为第二种方法是要走的路.我们在我们的项目中这样做,但仅限于只读DTO课程.只要您不使用它们进行插入/更新,我猜就好了.

还有你可能感兴趣的答案: