来自休眠投影标准的动态 DTO
Dynamic DTO from nhibernate projections 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);
如果我不在投影中设置任何字段,我的 return 如下:
但是如果我在我的代码中设置投影,我的结果如下:
如何在动态 DTO 对象中转换带有投影的列表?
我们需要的是变压器:
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"))
)
在此处查看更多信息,例如:
- How to partially project a child object with many fields in nHibernate
- NHibernate AliasToBean transformer associations
我的 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);
如果我不在投影中设置任何字段,我的 return 如下:
但是如果我在我的代码中设置投影,我的结果如下:
如何在动态 DTO 对象中转换带有投影的列表?
我们需要的是变压器:
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"))
)
在此处查看更多信息,例如:
- How to partially project a child object with many fields in nHibernate
- NHibernate AliasToBean transformer associations