C# Fluent NHibernate:在多用户环境中锁定行

C# Fluent NHibernate:在多用户环境中锁定行,c#,nhibernate,fluent-nhibernate,C#,Nhibernate,Fluent Nhibernate,让我们假设这个层次结构 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; } } 公共A类 { 公共int Id{get;set;} 公共IEnumerable子项{get;se

让我们假设这个层次结构

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; }
}
公共A类
{
公共int Id{get;set;}
公共IEnumerable子项{get;set;}
}
公共B级
{
公共父对象{get;set;}
公共字符串名称{get;set;}
}
我在WinForms中创建了一个应用程序,对于数据库通信,我使用Fluent NHibernate。多个用户可以同时使用该应用程序,但是,当用户决定使用应用程序的特定实例(或数据库中的特定行)时,我希望其他用户无法访问该行。当用户完成对特定行的操作后,我想再次使其可访问。这能做到吗


其思想是用户获取a,然后处理其部分或全部子项(B列表)。在该阶段,A将被锁定,以便其他用户无法处理A的子项。当用户完成工作后,A将被释放并可供其他用户访问。

Fluent NHibernate与您的映射有关。使用NHibernate进行数据访问有几种方法。您没有指定使用哪种方法,但无论哪种方法,都适用相同的原则

您所描述的是悲观锁定。描述了在NHibernate中执行此操作的方法。我想您应该使用
锁定模式。升级\u NOWAIT

如果B-s只能通过A访问,那么锁定A就足够了