域事件应该在事务内部还是外部引发?
在我们的应用程序中,我们在域模型中发生更改时引发域事件。事件处理程序执行的某些任务必须在引发事件时使用的同一事务中完成,其他任务必须在此事务之外执行。
例如,
将Orderline添加到Order实体时,会引发OrderLineAdded域事件,一个域事件会更改域模型的状态(因此必须在同一事务中执行),然后在事务完成时必须更新UI。
你会如何解决这个问题?
提升两个事件,一个在事务内,一个在事务外部。
在事务内部引发事件,但是使用事件处理程序发送Async请求来更新UI?
选项1似乎令人困惑,因为事件名称必须以某种方式传达它们进出事务,但是对于域事件的选项2处理程序必须始终假定它们是在事务内同步调用的。
也许有更好的方法?
没有找到相关结果
已邀请:
2 个回复
括宠
和
。前者在
方法中立即同步调用。一旦提交了事务(使用System.Transactions挂钩),后者就会排队等待调用。该解决方案工作正常,非常易读且易于维护。
街茬