如何在对象图的MassTransit Saga Persistence中进行Eager加载和显式加载

时间:2017-08-23 09:59:44

标签: c# entity-framework entity-framework-core masstransit saga

MassTransit中的Automatonymous是.Net中最好的State Machine实现之一,我们决定在内部系统中使用它;但是,我们在配置Saga以在Entity Framework中加载和更新Saga实例时遇到问题。

我们对EntityFrameworkSagaRepository<>中的加载数据没有任何控制权。例如,如果需要更新部分实例或进行显式加载,则不会有任何选项。 虽然您可以完全控制将Saga映射到SQL(通过IEntityTypeConfiguration<>),但这不会为您提供任何选项来定义应为特定状态加载对象图的哪个部分。除非我在这里遗漏了什么。

您可以通过一对一的关系制作一个Saga来轻松复制此问题。如果您发布到Saga以更新主要实体的详细信息,您将获得主键重复SQL错误,因为只有作为Saga的主实体已加载到DbContext并且您尝试更新将为null的详细信息。

我尝试通过Activity<>将详细信息实体附加到DbContext在进入Saga状态之前,但是当它保存更改时,细节实体状态是添加未修改

0 个答案:

没有答案