我是Hibernate的新手,我正在努力解决问题:
我有3个表,我需要在DataGridView上显示这些表中的一些数据。 通常 - 没有休眠,我必须选择并绑定列。
但我不需要这些表中的所有列。 我制作了示例项目,从一个表中选择数据。我将数据存储为hibernate poco对象的集合。然后我将它作为数据源绑定到DataGridView,它很好。
如果我需要来自多个表的列,如何绑定? 我应该有一个列的列。还是3个poco课程?或者我完全错了,我需要在映射级别上进行此操作?
答案 0 :(得分:1)
如果您只需要显示数据(而不是更改它),您可以为要在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>();
然后您应该能够将result
绑定到DataGridView。