Свободный NHibernate: блокировка строки в многопользовательской среде - PullRequest
0 голосов
/ 04 октября 2011

Давайте предположим, что эта иерархия.

public class A
{
  public int Id { get; set; }
  public IEnumerable<B> Children { get; set; }
}

public class B
{
  public A Parent { get; set; }
  public string Name { get; set; }
}

Я создал приложение в WinForms и для связи с базой данных использую Fluent NHibernate.Несколько пользователей могут использовать приложение одновременно, однако, когда пользователь решает работать с конкретным экземпляром A (или определенной строкой в ​​базе данных), я хочу сделать эту строку недоступной для других пользователей.И когда пользователь закончит работу с этой конкретной строкой, я хочу снова сделать ее доступной.Можно ли это сделать?

Идея состоит в том, что пользователь выбирает A, а затем работает с некоторыми или всеми его дочерними элементами (список B).На этом этапе A блокируется, так что никакой другой пользователь не может работать с дочерними элементами A. Когда пользователь заканчивает работу, A освобождается и становится доступным для других пользователей.

1 Ответ

2 голосов
/ 04 октября 2011

Свободный NHibernate о вашем отображении. Есть несколько способов сделать доступ к данным с помощью NHibernate. Вы не указываете, какой вы используете, но в любом случае применяются те же принципы.

То, что вы описываете, это пессимистическая блокировка. Способ сделать это в NHibernate описан здесь . Я думаю, что вы хотите использовать LockMode.UPGRADE_NOWAIT.

Если доступ к B-s возможен только через A, этого будет достаточно для блокировки A.

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