Nhibernate 选择中有多个列

Nhibernate 选择中有多个列,nhibernate,Nhibernate,我刚开始冬眠,我正在努力解决这个问题: 我有3个表,需要在DataGridView上显示这些表中的一些数据。 通常情况下,如果没有hibernate,我必须创建select和bind列 但我不需要这些表中的所有列。 我制作了一个示例项目,从一个表中选择数据。我将数据存储为hibernate poco对象的集合。然后我将其作为数据源绑定到DataGridView,这样就可以了 如果需要多个表中的列,如何绑定? 我应该有一个带列的类。还是3节poco课?或者我完全错了,我需要在映射级别执行此操作?如

我刚开始冬眠,我正在努力解决这个问题:

我有3个表,需要在DataGridView上显示这些表中的一些数据。 通常情况下,如果没有hibernate,我必须创建select和bind列

但我不需要这些表中的所有列。 我制作了一个示例项目,从一个表中选择数据。我将数据存储为hibernate poco对象的集合。然后我将其作为数据源绑定到DataGridView,这样就可以了

如果需要多个表中的列,如何绑定?
我应该有一个带列的类。还是3节poco课?或者我完全错了,我需要在映射级别执行此操作?

如果您只需要显示数据(而不是更改数据),您可以为要在DataGridView中列出的对象定义一个类,例如

CombinedClassForGrid
{
    public Id { get; set; }
    public PropertyA1 { get; set; }
    public PropertyB1 { get; set; }
    public PropertyB2 { get; set; }
}
使用NHibernate,您可以像这样查询表,假设
ClassA
有一个属性
ClassBRef

ClassB bAlias = null;
CombinedClassForGrid cForGrid = null;

IList<CombinedClassForGrid> result = session.QueryOver<ClassA>()
    .JoinAlias(a => a.ClassBRef, () => bAlias)
    .SelectList(list => list
        .Select(a => a.Id).WithAlias(() => cForGrid.Id)
        .Select(a => a.Property1).WithAlias(() => cForGrid.PropertyA1)
        .Select(a => bAlias.Property1).WithAlias(() => cForGrid.PropertyB1)
        .Select(a => bAlias.Property2).WithAlias(() => cForGrid.PropertyB2))
        .TransformUsing(Transformers.AliasToBean<CombinedClassForGrid>())
        .List<CombinedClassForGrid>();
ClassB bAlias=null;
CombinedClassForGrid cForGrid=null;
IList result=session.QueryOver()
.JoinAlias(a=>a.ClassBRef,()=>bAlias)
.SelectList(list=>list
.Select(a=>a.Id).WithAlias(()=>cForGrid.Id)
.Select(a=>a.Property1).WithAlias(()=>cForGrid.PropertyA1)
.Select(a=>bAlias.Property1).WithAlias(()=>cForGrid.PropertyB1)
.Select(a=>bAlias.Property2).WithAlias(()=>cForGrid.PropertyB2))
.TransformUsing(Transformers.AliasToBean())
.List();
然后您应该能够将
result
绑定到DataGridView