小编Ped*_*ira的帖子

如何实现 DDD 存储库来处理具有多个实体的查询?

我正在努力在 .net 解决方案中使用 DDD 来实现需求。我会尽量减少细节:

实体:

  • 类别(UId、名称)
  • 属性(UId、名称、AttributeValues[])
  • 属性值(UId、名称、ParentAttributeUId)
  • 流程(UId、名称、AttributeValues[]、Categories[])

数据模型:

  • 每个进程可以有多个类别(例如 ProcessCategoryMap 表)
  • 每个 Process 可以有多个 AttributeValues(例如 ProcessAttributeValue 表)
  • 类别、属性、属性值之间没有关系

我有一个 sp FetchByCategoryAndAttributeValues(CategoryId, AttributeValueIds []) 返回一个数据集:

  • 匹配 CategoryId 和 AttributeValueIds 的进程列表
  • 可用于细化搜索的 AttributeValues 列表。

如何实现Repository加上调用SP的方法,当返回多个实体时,在我看来返回的对象是一个值对象并且它似乎不适合现有的实体存储库?

有任何想法吗 ?

问候,

佩德罗

==== 编辑:2011/03/30 02:52 PM UTC ====

我正在更新我的问题,以重视所有评论并帮助其他面临类似挑战的人。

@正义:

解决方案:使用 ORM,例如 NHibernate 加上使用 ORM 的所有理由

我不记得在 Eric Evans ddd 书中提到过 ORM。选择特定的持久性技术到底有什么影响?整理好域后,您可以随意保留它。Offcourse我知道NH可以提供帮助并且是强大的工具,但它本身并不是解决方案。

@Dominic / @Justice:

解决方案:远离存储过程。

首先,当我看到好的 T-SQL 存储过程时,对我来说很难证明,我不是在谈论 CRUD 或简单的 T-SQL 查询。我提到的 SP 运行一些 TSQL CTE,结合来自不同表的度量数据来计算权重,使用临时表并返回客观结果:进程列表、类别列表、属性值列表。SP 针对特定的 SQL 数据库/服务器进行了优化和调整,可以是 MSFT、Oracle 等。我不相信将这些计算转移到应用程序端,然后依赖 …

.net domain-driven-design

4
推荐指数
1
解决办法
2744
查看次数

标签 统计

.net ×1

domain-driven-design ×1