1

I have setup the following RavenDB "Result Transformer" to operate on the model included below and outputting the result class as defined below. When the query is executed everything works fine except that the "Id" field in the VoicemailMessageHeader in the result class does not get populated. All of the other fields in the VoicemailMessageHeader do get populated. Why would the "Id" field not be getting populated?

Result Transformer:

public class VoicemailMessageHeaderWithDisplayNameTransformer : AbstractTransformerCreationTask<VoicemailMessageHeader>
{
  public VoicemailMessageHeaderWithDisplayNameTransformer()
  {
    TransformResults = voicemailMessageHeaders => from voicemailMessageHeader in voicemailMessageHeaders
       let displayNameRecord = LoadDocument<DisplayName>(voicemailMessageHeader.CallerPhoneNumber)
       let displayName = (displayNameRecord != null) ? displayNameRecord.Name : string.Empty
       select new{
         VoicemailMessageHeader = voicemailMessageHeader,
         DisplayName = displayName,
       };
   }
 }

The database object that gets transformed:

public class VoicemailMessageHeader
{
        public string Id { get; set; }
        public string OwnerId { get; set; }
        public string FolderId { get; set; }
        public string CallerName { get; set; }
        public string CallerPhoneNumber { get; set; }
        public string AccountNumber { get; set; }
        public DateTime CallDateTime { get; set; }
        public TimeSpan Duration { get; set; }
        public string MessageUrl { get; set; }
        public bool IsListened { get; set; }
        public bool IsDeleted { get; set; }
        public bool IsDownloaded { get; set; }
        public string MessageFilePath { get; set; }
}

The result class that is created by the transformer:

public class VoicemailMessageHeaderWithDisplayName
{
        public VoicemailMessageHeader VoicemailMessageHeader { get; set; }
        public string DisplayName { get; set; }
}

The Query:

session.Query<VoicemailMessageHeader>()
  .TransformWith<RavenDbIndexes.VoicemailMessageHeaderWithDisplayNameTransformer,
    VoicemailMessageHeaderWithDisplayName>()
Mike Moore
  • 1,330
  • 1
  • 14
  • 20

0 Answers0