Давайте предположим, что эта иерархия.
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 освобождается и становится доступным для других пользователей.