如何在我的NHibernate查询中只选择几列?
我有一个类到一个表映射; 不幸的是,这个表有110多列,查询需要很长时间,特别是在大多数时候我只想查看<10列。
我的问题是查询是根据用户想要查看的内容动态生成的。 我无法真正创建不同列的不同映射,因为会有非常多的组合。 我正在使用条件API来生成查询。 我还可以使用它来只选择用户想要的列吗? 还是其他一些方法?
谢谢
使用ProjectionList
选择所需的列。 请参阅此处以获取示例。
使用LINQ很容易(假设您使用的是NHibernate 3.0或更高版本):
var products = from p in Session.Query() where // ...some query (snip) select new { Name = p.ProductName, Description = p.ShortDesc, Price = p.Price, Units = p.Quantity };
此外,如果您正在使用HQL,您只需选择与使用T-SQL类似的列,但使用Transformer
来获取强类型对象:
首先使用缩小的列创建一个类:
public class ProductReport { public string Name { get; set; } public string Description { get; set; } public decimal Price { get; set; } public int Units { get; set; } }
然后你的查询:
string hql = "select p.ProductName as Name, p.ShortDesc as Description ...(snip) " + "from Product p " + "where ...some query (snip)"; IQuery query = Session.CreateQuery(hql) .SetResultTransformer(Transformers.AliasToBean()); IList products = query.List ();
确保查询中的别名(如名称,描述等)与类中的属性名称匹配。
除了Tim给你的例子,你可以做这样的事情:
IList selection = session.QueryOver() .Select( c => c.Name, c => c.Age) .List
以上示例取自: http : //nhforge.org/blogs/nhibernate/archive/2009/12/17/queryover-in-nh-3-0.aspx
上述就是C#学习教程:如何在我的NHibernate查询中只选择几列?分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1004801.html