【问题标题】:Implement a simple IFindSaga实现一个简单的 IFindSaga
【发布时间】:2017-07-10 07:40:58
【问题描述】:

我实现了一个简单的IFindSaga,我参考并遵循了 SQL Persistence Saga Finding Logic 的特定软件文档中提供的相同步骤。我在session.GetSagaData<SagaData> 收到一个错误,指出:“SynchronizedStorageSession 不包含GetSagaData 的定义并且没有扩展方法GetSagaData 可以找到接受SynchronizedStorageSession 类型的第一个参数(您是否缺少使用指令或程序集引用)。”请帮我解决这个问题。

这是我实现IFindSaga的代码

public class TrackerFind : IFindSagas<SagaData>.Using<ITrackerData>
        {
            public Task<SagaData> FindBy(ITrackerData message, SynchronizedStorageSession session, ReadOnlyContextBag context)
            {
                return session.GetSagaData<SagaData>(
                    context: context,
                    whereClause: "JSON_VALUE(Data,'$.PaymentTransactionId') = @propertyValue",
                    appendParameters: (builder, append) =>
                    {
                        var parameter = builder();
                        parameter.ParameterName = "propertyValue";
                        parameter.Value = message.TrackerID;
                        append(parameter);
                    });
            }
        }

【问题讨论】:

  • docs.particular.net/samples/saga/sql-sagafinder 你有所有需要的参考资料吗?
  • 请注意,NServiceBus 文档中的代码 sn-ps 上有一个“复制使用”选项,可以帮助解决此类问题。此外,自定义 saga finder 是 NServiceBus 的一个非常偏僻的功能,所以我们(我为 Particular Software 工作)很想听听您在这里使用自定义 saga finder 的具体用例,而不是让PaymentTransactionId 作为您的正常关联属性。
  • 我添加了特定软件中提到的引用和命名空间,但仍然存在相同的错误。 @SeanFarmar
  • @DavidBoike 我只是想了解IFindSagas。如果您可以提供简单示例源代码的链接以及每个步骤的说明,将会很有帮助(因为我只有 C# 的基本知识)。

标签: c# .net nservicebus saga


【解决方案1】:

“GetSagaData”是一个扩展方法,它是“NserviceBus”命名空间的一部分。 包括以下声明

using NServiceBus;

这对我有用。我现在没有收到该错误

【讨论】:

    【解决方案2】:

    使用 nuget

    包 NServiceBus.Persistence.Sql

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-03-24
      • 2011-09-17
      • 2020-01-20
      • 2012-03-23
      • 2012-09-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多