Asp.net NHibernate会话。加载或会话。获取

Asp.net NHibernate会话。加载或会话。获取,asp.net,asp.net-mvc,nhibernate,ado.net,fluent-nhibernate,Asp.net,Asp.net Mvc,Nhibernate,Ado.net,Fluent Nhibernate,我对Session.Load和Session.Get有一个概念,但我想知道它的实时实现。假设存在具有n:1关系的公司表和位置表。在“公司编辑”页面中,用户选择一个位置并提交该页面。通过使用下面的代码,它可以在不影响数据库的情况下连接 cust.Location = session.Load<Location>(selectedlocationid) cust.Location=session.Load(selectedlocationid) 但同时,如果另一个用户在此期间删除该

我对Session.Load和Session.Get有一个概念,但我想知道它的实时实现。假设存在具有n:1关系的公司表和位置表。在“公司编辑”页面中,用户选择一个位置并提交该页面。通过使用下面的代码,它可以在不影响数据库的情况下连接

cust.Location =  session.Load<Location>(selectedlocationid)
cust.Location=session.Load(selectedlocationid)
但同时,如果另一个用户在此期间删除该位置,则可能会发生异常。这种情况甚至可能发生在ADO.NET/Entity framework中,因为我们只是更新id,而不检查是否存在


我想大致了解如何针对这个简单场景进行更新。由于web应用程序已断开了体系结构连接,是否可以忽略这种可能性并继续“加载”(或)使用“Get”点击数据库并检查空值,然后继续操作。

您不能在删除前锁定行,因为在查看要删除的行和实际删除该行之间可能会有很多延迟。
不锁定行是错误的

在数据库级别实现您的关系,以便它不允许与已删除行的关系。这样,如果有人删除了行,代码将引发异常


您可以捕获该异常并相应地提醒用户。

我的错,我想我想我想得太多了。我完全忘记了引用集成。谢谢你的回复。