如何在transformer中使用class类型

How to use class type in transformer

在我的 booking 对象中,我保留了一个对象引用列表,其中包含相应文档的 TypeWorkflowStepTypeId。然后我想使用 Where 中的类型来查找合适的文档,并通过 id 检索它。但是,在将转换器编译为 RavenDB 时,它说它不知道我的类型是什么。

代码:

public class BookingToTrainingTransformer
        : RavenTransformerBase<Booking, BookingToTrainingTransformer.Result>
{
  public class Result
  {

  }

  public BookingToTrainingTransformer()
  {
      TransformResults = results =>
        from result in results
        let trainingWorkflow = LoadDocument<TrainingWorkflow>(result.WorkflowSteps
           .FirstOrDefault(a => a.WorkflowStepType == typeof(Trainingworkflow))
           .WorkflowStepTypeId)
   }
}

澄清一下,我知道RavenDB 不知道我的类型是什么。在数据库方面,我只是想让它生成两种类型的字符串并比较这些字符串。但是,出于重构的目的,如果知道该类型实际上在所述转换器中使用会很棒,因此如果它被重构,转换器也会自动被重构。

我想要的可能吗?

您希望它比较实际类型,以便以后重构该类型时,转换器仍能正常工作?

不,那不可能。

如果我没理解你的问题,WorkflowStepType 可以是类型名称吗?如果您稍后重构类型名称,当然,您仍然需要更新数据库中的 WorkflowStepType 属性。但是在你的变压器中,它看起来像这样:

.FirstOrDefault(a => a.WorkflowStepType == nameof(Trainingworkflow))