小编Cod*_*che的帖子

我可以使用NHibernate Criteria将实体及其子集合投影到类中吗?

我正在使用NH Criteria检索实体并将选择性字段投影到自定义类(有点像将数据投影到ViewModel上以便在MVC视图上显示).

使用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>();
Run Code Online (Sandbox Code Playgroud)

但是,我的实体包含一个集合,我也希望将它带回来,并将其作为集合投影到我的自定义类中.

我的域模型看起来(简化形式)如下:

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
}
Run Code Online (Sandbox Code Playgroud)

这是我要投影到的"数据模型"类:

public class EmailDataModel {
    public string Subject
    public List<EmailAttachmentDataModel> Attachments
}

public class EmailAttachmentDataModel {
    public string Filename
    public byte[] Data …
Run Code Online (Sandbox Code Playgroud)

collections nhibernate-criteria nhibernate-projections

3
推荐指数
1
解决办法
2155
查看次数