我有一个包含汽车信息的表(我们称之为 tbl_incoming_car)。该表有一个名为“customer_number”的非唯一列,它显示了到目前为止进入系统的汽车数量。同一辆车可以进出很多次,但只注册一次。
因此,当一辆新车进入时,我需要获取最后一辆的编号,将其递增,然后将其保存为新车的“customer_number”。
我知道最简单的方法是为汽车设置一个单独的表,在其中放置“customer_number”,然后在其他表中注册输入和输出,但这只是暴露情况的一个愚蠢示例。所以没有必要讨论这种方法是错误的,我已经知道了:)
正如我所说,每次新车进入系统时,我都必须获取最新添加的行,获取“customer_number”,将其递增并将其保存为原子操作。其他应用程序实例可以尝试做同样的事情,并且数据库必须在“创建任务”期间保留对最后添加的行的请求。
我认为我可以通过将隔离级别设置为可序列化来做到这一点,但我认为它不会阻止读取最后一行,而是插入新行。所以看起来锁定是解决方案。我尝试在代码中使用静态对象作为监视器,它工作正常,但当然它仅限于同一个应用程序域,我需要数据库级别的东西。
我认为 EF 中没有任何东西可以在数据库上设置锁,那么在表上设置锁并稍后释放它的最佳方法是什么?
谢谢。