动态DTO来自nhibernate投影标准

时间:2015-11-18 17:42:45

标签: c# nhibernate criteria dto nhibernate-criteria

我的c#代码中有一个投影列表:

var criteria = DetachedCriteria.For(this.modelType);

         for (int i = 0; i < this.fields.Length; i++)
            projections.Add(Projections.Property(this.fields[i]));

        if (fields.Length > 0)
            criteria.SetProjection(projections);

如果我在投影中没有设置任何字段,我的回复就是:

enter image description here

但如果我在代码中设置了投影,我的结果如下:

enter image description here

如何在动态DTO对象中使用投影转换列表?

1 个答案:

答案 0 :(得分:1)

我们需要的是变压器:

criteria
    .SetResultTransformer(
      NHibernate.Transform.Transformers.AliasToBean<MyEntity>())

或没有通用

criteria
    .SetResultTransformer(
      NHibernate.Transform.Transformers.AliasToBean(this.modelType))

变形金刚的要点是使用锯齿(参见.As()):

.SetProjection(Projections.ProjectionList()
  .Add(Projections.Property("Property1").As("Property1"))
  .Add(Projections.Property("Property2").As("Property2"))
  .Add(Projections.Property("Property3").As("Property3"))
)

在这里查看更多内容,例如: