Nhibernate绑定到DataGridView,插入不';行不通

Nhibernate绑定到DataGridView,插入不';行不通,nhibernate,datagridview,Nhibernate,Datagridview,要将NHibernate类绑定到DataGridView,我需要: IList<DatabaseAccess.poco.Employee> employees = (from e in session.Linq<DatabaseAccess.poco.Employee>() select e).ToList<DatabaseAccess.poco.Employee>(); this.employeeBindingSource.

要将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;
IList员工=
(从session.Linq()中的e选择e.ToList();
this.employeeBindingSource.DataSource=员工;
当我提交时,只发送对数据库中已经存在的行的更改,使用网格创建新行是行不通的

因此,我可以期望将一个列表绑定到
数据源
就足够了,而且我不必创建Employee对象并执行
session.Save(new_Employee)?还是必须这样


我还没有找到任何教程来描述完整的DataGridView绑定以及创建新行。

在page_load方法中,是您在iPostBack中的datagrid绑定

像这样:

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            //Grid Bind
        }
    }

这是必须的。DataGridView不知道NH,NH也不知道DataGridView添加了新行。所以,例如,您必须在UserAddDrow事件处理程序中保存新实体

using (ITransaction tx = session.BeginTransaction())
{
    session.Save(albumBindingSource.Current);
    tx.Commit();
}

我不使用Asp.Net。仅Winformsfirst,您必须确认插入操作工作。如果插入不起作用,您的session.Save(new_employee)方法是否添加事务属性?像这样[Transaction(TransactionMode.Requires)]insert只在网格上工作。我可以添加新记录,但提交后不会向数据库发送任何内容。更新有效。我没有使用session.Save(…)。我在想网格会为我做这件事。在nhibernate中,插入、更新、删除操作应该在事务中进行。特别是在执行这些操作后,在关闭会话之前,NH会跟踪检索到的每个会话缓存实体。调用ITransaction.Commit()时,NH更新所有修改的实体。提交后,我得到:行被另一个事务更新或删除(或未保存的值映射不正确)。