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