I use NH Criteria to retrieve project objects and select fields in a custom class (a bit like projecting data on a ViewModel to display in an MVC view).
This is easy to do with ProjectionList:
var emailCriteria = mSession.CreateCriteria<Email>();
emailCriteria.SetProjection(
Projections.ProjectionList()
.Add(Projections.Property("Subject"), "Subject")
);
emailCriteria.SetResultTransformer(Transformers.AliasToBean<EmailDataModel>());
var result = emailCriteria.List<EmailDataModel>();
However, my object contains a collection, and I want to return it back, and project it as a collection into my custom class.
My domain model looks (in simplified form) as follows:
public class Email {
public string Subject
public List<EmailAttachment> Attachments
etc...
}
public class EmailAttachment {
public UploadedFile File
}
public class UploadedFile {
public string Filename
public UploadedFileData Data
}
public class UploadedFileData {
public byte[] Data
}
Here are the “data model" classes that I want to project onto:
public class EmailDataModel {
public string Subject
public List<EmailAttachmentDataModel> Attachments
}
public class EmailAttachmentDataModel {
public string Filename
public byte[] Data
}
, , , " ?", , . .
, , ( UploadedFile.Filename UploadedFileData.Data) EmailAttachmentDataModel EmailDataModel.
, - EmailCriteria.CreateAlias, EmailCriteria.CreateQuery - , , .
, , , NH Criteria.