【问题标题】:NHibernate Select Parent Fields OnlyNHibernate 仅选择父字段
【发布时间】:2014-08-14 12:51:35
【问题描述】:

我有一个父实体 A,它有许多 B 子实体。

为了提高我网站的性能,我想首先通过给定 ID 选择父 A 并将其显示给用户。并在后台加载 A 的孩子并在准备好时显示它们。

我当前的查询:

var result = session.QueryOver<A>().Where(a.ID = "123").List<A>();
return result.FirstOrDefault();

此查询选择并返回 A 和他的所有孩子。

任何人都知道如何让 nhibernate 只加载 A 的字段?

使用惰性对我不利,因为我想在用户收到 A 后创建另一个选择子项的查询。

【问题讨论】:

    标签: c# sql nhibernate


    【解决方案1】:

    我会创建一个 DTO 类来准确描述您想要来自 A 的哪些字段:

    public class ADto
    {
        public int Id { get; set; }
    
        public string Property1 { get; set; }
    
        public string Property2 { get; set; }
    }
    

    然后使用 QueryOver 来选择那些属性:

    ADto result = null;
    
    ADto dto = session.QueryOver<A>()
        .Where(a => a.Id == "123")
        .SelectList(list => list
            .Select(a => a.Id).WithAlias(() => result.Id)
            .Select(a => a.Property1).WithAlias(() => result.Property1)
            .Select(a => a.Property2).WithAlias(() => result.Property2)
        )
        .TransformUsing(Transformers.AliasToBeanTransformer<ADto>())
        .SingleOrDefault<ADto>();
    

    然后编写一个单独的类似查询来检索A 的孩子。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-16
      • 1970-01-01
      相关资源
      最近更新 更多