簡體   English   中英

NHibernate查詢使用Criteria-api返回未映射的對象

[英]NHibernate query returning unmapped object using Criteria-api

我想查詢一個nhibernate映射的類,但結果應該是一個未映射的對象。 映射和未映射的類如下所示:

[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的更直接的方法嗎?

是的,只是做

result.SetResultTransformer(Transformers.AliasToBean<ClassB>());
result.List<ClassB>();

您還需要將屬性投影包裝為Aliass Projections.Alias(Projections.GroupProperty("PropertyA"), "PropertyA")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM