Nhibernate привязка к DataGridView - PullRequest
       0

Nhibernate привязка к DataGridView

3 голосов
/ 05 февраля 2012

Почему нет никакого учебника по привязке NHibernate к DataGridView в Winforms. Только хочу этим воспользоваться? Я знаю, что это вопрос привязки сбора к DataGridView. Но у меня проблемы с изготовлением CRUD.

У меня есть база данных SQLite + таблица с отображением:

 <class name="Employee" table="emplyees" lazy="true">
    <id name="id">
      <generator class="increment"></generator>
    </id>

    <property name="first_name" not-null="true"></property>
    <property name="last_name" not-null="true"></property>
    <property name="login" not-null="true"></property>
    <property name="sid"></property>         
</class>

Код, который работает.

Employee new_employee =
    new Employee() { first_name = "test1", last_name = "test3", login = "login1" };
session.Save(new_employee);
session.Commit();

Но если я связываюсь с DataGridView и использую сетку для вставки новой строки:

transaction = session.BeginTransaction();
employees = (from e in session.Linq<Employee>() select e).ToList<Employee>();
this.employeeBindingSource.DataSource = employees;


private void employeeDataGridView_UserAddedRow(object sender, DataGridViewRowEventArgs e)
{
Employee new_employee = (Employee)this.employeeBindingSource.Current;
session.Save(new_employee);
}

После session.Commit() Я получаю ошибку: Row was updated or deleted by another transaction (or unsaved-value mapping was incorrect). В журналах я вижу, что NH отправляет UPDATE для этой новой строки. Должно быть вставлено.

1 Ответ

0 голосов
/ 05 февраля 2012

Строка была обновлена ​​или удалена другой транзакцией (или сопоставление несохраненного значения было неправильным)

Что Employee, вероятно, имеет идентификатор, поэтому NHibernate "думает", что его следует обновить, но NHibernate не находит его, поэтому транзакция NH считает, что сотрудник был удален в другой транзакции.

Это свойство id имеет значение, а не значение по умолчанию.убедитесь new_employee.id = 0;

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...