创建一个只有您需要的属性的类,通常这是一个类似{Id,Label}的汇总类,您可以在需要简单类型的任何地方重复使用它,例如在列表中。使用ProjectionList来定义要返回的列。然后使用Transformers.AliasToBean将结果转换为简单类型。
ProjectionList projectionList = Projections.ProjectionList();
projectionList.Add(Projections.Property("EmployeeID"), "Id");
projectionList.Add(Projections.Property("EmployeePosition"), "Label");
var x = DetachedCriteria.For(Employee);
x.SetProjection(projectionList);
x.SetResultTransformer(Transformers.AliasToBean(SimpleType)));
return x.GetExecutableCriteria(UnitOfWork.CurrentSession).List<SimpleType>();
这就是问题,它有很多bug,在特定情况下它对我来说没有用处。我希望他们会在NH 3.0 – Jacob 2010-04-14 20:29:47
嗯。我们毫不费力地在一个相当大的项目中使用它。因为我们没有处理太多复杂的连接,所以可能没有足够的推动它。 – 2010-04-14 20:38:19