1
我想查询一个nhibernate映射的类,但结果应该是一个未映射的对象。该映射和未映射类是这样的:NHibernate查询使用Criteria-api返回未映射的对象
[Class(NameType = typeof(ClassA)]
public class ClassA
{
[Cache(0, Usage = CacheUsage.ReadWrite)]
[Id(1, Name = "Id", UnsavedValue = null)]
[Generator(2, Class = "native")]
public virtual long? Id { get; set; }
[Property]
public virtual string PropertyA { get; set; }
[Property]
public virtual string PropertyB { get; set; }
}
public class ClassB
{
public string PropertyA { get; set; }
public string PropertyB { get; set; }
public int Number { get; set; }
}
而且我用这个方法来得到我想要的结果:
public ICollection<ClassB> Group()
{
var result =
Session.CreateCriteria(typeof(ClassA)).SetProjection(
Projections.ProjectionList().Add(Projections.RowCount(), "Number")
.Add(Projections.GroupProperty("PropertyA"))
.Add(Projections.GroupProperty("PropertyB")));
return
(result.List().Cast<IList>().Select(
entry =>
new ClassB {
Number = (int)entry[0],
PropertyA = (string)entry[1],
PropertyB = (string)entry[2]
}
)).ToList();
}
这工作得很好,但是是不是有一个更直接的办法这使用criteria-api?
谢谢,完美的作品。我只是给了预测一个explixit别名来使它工作,像这样:'.Add(Projections.GroupProperty(“PropertyA”),“PropertyA”)' – 2011-02-26 17:57:23
@Rian,啊,是的,忘记了这一点。将编辑我的答案。 – Vadim 2011-02-26 18:57:43