C# nhibernate投影标准的动态DTO

C# nhibernate投影标准的动态DTO,c#,nhibernate,criteria,dto,nhibernate-criteria,C#,Nhibernate,Criteria,Dto,Nhibernate Criteria,我的c代码中有一个投影列表: var-criteria=DetachedCriteria.For(this.modelType); for(int i=0;i0) 标准.设定投影(投影); 如果我在投影中未设置任何字段,我的回报如下: 但如果我在代码中设置了投影,我的结果如下: 如何将动态数据中的投影列表转换为对象?我们需要的是transformer: criteria .SetResultTransformer( NHibernate.Transform.Transf

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

var-criteria=DetachedCriteria.For(this.modelType);
for(int i=0;i0)
标准.设定投影(投影);
如果我在投影中未设置任何字段,我的回报如下:

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


如何将动态数据中的投影列表转换为对象?

我们需要的是transformer:

criteria
    .SetResultTransformer(
      NHibernate.Transform.Transformers.AliasToBean<MyEntity>())
变压器的要点是使用别名(请参见
.As()
):

请在此处查看更多信息,例如:


我需要一个动态DTO对象。。用户选择要设计的字段,我会返回一个动态列表,我会说,术语dynamicdto没有意义。我们要么在C#中将DTO定义为标准类,要么将其定义为字典。如果这是一个字典,那么生成的
IList
应该很容易转换为IDictionary。但你还是需要知道钥匙。。。(就像上面的别名)。。。关于dto和POCOTH的几句话第二个例子对我有帮助。。真的很高兴见到你。享受强大的NHibernate Igor;)
criteria
    .SetResultTransformer(
      NHibernate.Transform.Transformers.AliasToBean<MyEntity>())
criteria
    .SetResultTransformer(
      NHibernate.Transform.Transformers.AliasToBean(this.modelType))
.SetProjection(Projections.ProjectionList()
  .Add(Projections.Property("Property1").As("Property1"))
  .Add(Projections.Property("Property2").As("Property2"))
  .Add(Projections.Property("Property3").As("Property3"))
)