【问题标题】:Querying selected columns with NHIbernate?使用 NHIbernate 查询选定的列?
【发布时间】:2010-02-05 05:17:55
【问题描述】:

在我的 POCO 类中,我有 16 个属性映射到具有 16 列的数据库表。现在我必须编写仅使用 NHIbernate 从表中获取列子集的方法。当我不想获取数据库中持久对象的所有属性时如何执行此操作。

【问题讨论】:

标签: nhibernate


【解决方案1】:

投影允许从查询中返回实体列表以外的内容。

var proj = Projections.ProjectionList()
    .Add(Projections.Property("Id"), "Id")
    .Add(Projections.Property("Username"), "Username");

var list2 = DetachedCriteria.For<User>()
    .Add(Expression.Eq("Username", "lachlan"))
    .GetExecutableCriteria( sessionFactory.GetCurrentSession())
    .SetProjection( proj )
    .List();

NHibernate 还可以将投影结果映射到类型列表。

var proj = Projections.ProjectionList()
    .Add(Projections.Property("Id"), "First")
    .Add(Projections.Property("Username"), "Second");

var list2 = DetachedCriteria.For<User>()
    .Add(Expression.Eq("Username", "lachlan"))
    .GetExecutableCriteria( sessionFactory.GetCurrentSession())
    .SetProjection( proj )
    .SetResultTransformer(Transformers.AliasToBean(typeof(Pair)))
    .List<Pair>();

【讨论】:

    【解决方案2】:

    当前版本不支持类的延迟加载部分(我相信即将发布的版本确实包含此功能)。

    目前您可以关注workaround proposed here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-22
      • 2011-02-12
      • 1970-01-01
      相关资源
      最近更新 更多