【问题标题】:Unit of Work and returning newly created Object ID's, or custom Response objects工作单元并返回新创建的对象 ID 或自定义响应对象
【发布时间】:2011-04-06 13:39:09
【问题描述】:

工作单元是一个很棒的模式,我已经将它整合到我们的存储库 CUD 操作中......

我认为的一个缺点是在创建时无法将与工作单元相关联的多个对象的 ID(或者可能是响应 DTO)返回给调用代码() 方法。

例如,假设我有一个 Customer 和一个 Order 对象。我在调用代码中创建新的瞬态对象,通过工作单元的 .Create() 方法添加它们,然后提交工作单元。

虽然我的对象已正确保存到数据库,但我并没有从我的消费代码中调用每个对象的 Repository.Create(),工作单元是,所以我真的没有机会将任何信息发送回与每个特定对象相关的消费代码。

有什么想法吗?可以(或者一个更好的问题,应该)扩展工作单元以返回某种类型,也许是一个自定义对象,它可以在字典中具有具有新 ID 的对象类型或类似的东西?

我只是不知道这是否适合工作单元承担的任务。在书籍和博客中的示例中,我还没有真正看到这个问题得到解决。

有什么想法吗?

【问题讨论】:

    标签: unit-of-work


    【解决方案1】:

    工作单元本身并不排除返回 ID 或对象。

    问题可能是您使用的工作粒度太高,即创建多个对象,您可能希望在单个“单元”中捕获其 ID(尽管在您的示例中,返回一个订单对象有一个customerid就可以解决问题)。我的建议是保持你的单位很小,通常只处理 1 个聚合根。

    也就是说,这是与命令查询责任分离 (CQRS) 一起使用的模式的一个真正问题,例如事件溯源。

    在这种情况下,有两种方法可以解析对象 ID: 1. 有一个“对象创建”回调 2. 为您的瞬态对象提供 guid id,并使用 Identity Mapper 检索创建的 ID。

    希望对你有帮助

    史蒂文

    【讨论】:

      猜你喜欢
      • 2015-10-04
      • 1970-01-01
      • 2021-04-15
      • 2016-06-29
      • 1970-01-01
      • 2018-11-14
      • 1970-01-01
      • 2017-07-13
      • 2019-08-23
      相关资源
      最近更新 更多