0

我对 Session.Load 和 Session.Get 有一个想法,但想知道它的实时实现。假设存在具有 n:1 关系的 Company 和 Location 表。在公司编辑页面中,用户选择一个位置并提交页面。通过使用下面的代码,它可以在不访问数据库的情况下附加。

cust.Location =  session.Load<Location>(selectedlocationid)

但同时,如果其他用户在此期间删除了该位置,则可能会发生异常。这种情况甚至可能发生在 ADO.NET/Entity 框架中,因为我们只是在不检查存在的情况下更新 id。

我想大致了解如何针对这个简单的场景进行更新。由于 Web 应用程序的架构已断开连接,是否可以忽略这种可能性并继续使用“加载”(或)使用“获取”访问数据库并检查空值并继续。

4

1 回答 1

0

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

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

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

于 2012-09-06T04:33:58.113 回答