从实体获取单列
如何从查询而不是整个对象中获取单个列?
我可以做这样的事情来获得整个对象,但我想要的只是名字:
IList tribbles = session.CreateCriteria(typeof(Tribble)).List(); IList names = new List(); foreach (Tribble t in tribbles) { names.Add(t.Name); }
我希望能够指定其他条件,那么是否可以排除某些列被检索?
这是我最终使用的解决方案:
ICriteria c = session.CreateCriteria(typeof(Tribble)); c.SetProjection(Projections.ProjectionList().Add(Projections.Property("Name"))); IList names = c.List ();
我从这个旧的StackOverflow问题中得到了这个想法。
大约五年后……,这是你可以用NHibernate.Linq做的事情:
IList names = session.Query().Select(t => t.Name).ToList()
你可以这样做:
IQuery query = dao.GetQuery(@"SELECT u.Id FROM UserImpl u WHERE u.UserName = :username"); query.SetParameter("username", username); return (long)query.UniqueResult();
用字符串执行查询怎么样?
IList names = session.CreateQuery("select name from Tribbles").List ();
你通常不这样做。 拥有部分填充的业务对象很少有意义。
你为什么想做这个?