要将NHibernate类绑定到DataGridView,我会这样做:
IList<DatabaseAccess.poco.Employee> employees =
(from e in session.Linq<DatabaseAccess.poco.Employee>() select e).ToList<DatabaseAccess.poco.Employee>();
this.employeeBindingSource.DataSource = employees;
当我提交时,只发送对数据库中已存在的行的更改,使用网格创建新行不起作用。
那么,我可以期望将列表绑定到DataSource
就足够了,我不必创建Employee对象并执行session.Save(new_employee);
吗?或者这是必须的吗?
我没有找到任何描述完整DataGridView绑定以及创建新行的教程。
答案 0 :(得分:1)
这是必须的。 DataGridView不了解NH和NH并不知道DataGridView添加了新行。因此,您必须在UserAddedRow事件处理程序中保存新实体。
using (ITransaction tx = session.BeginTransaction())
{
session.Save(albumBindingSource.Current);
tx.Commit();
}
答案 1 :(得分:0)
在page_load方法中,您的数据网格是否在IsPostBack中绑定。
像这样: protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
//Grid Bind
}
}