Lightswitch - 保存管道中的死锁

时间:2014-09-12 07:37:30

标签: visual-studio-lightswitch

两天前,我在Lighswitch应用程序的保存管道中遇到了僵局。我想,这是我的应用程序的问题,但后来,在对Lightswitch管道进行一些测试和读取信息后,我发现隔离级别可重复读取导致它。

伪码:
在某个实体的插入方法内部,从数据源加载一些其他实体(E1)然后修改该实体 - 所以读写模型。如果同时启动更多事务,则可能发生死锁:
1.交易A读E1 2.交易B读E1 3.交易A写E1,但等待交易B
4.交易B写E1,但等待交易A.
5.发生死锁

因此,如果保存管道包含某些实体的读写,则必须使用死锁进行计数。对?

Hovewer,简单的更新实体也是可读写的,但不会发生死锁。有人能说我为什么吗?

谢谢。

1 个答案:

答案 0 :(得分:1)

这里的问题是两个事务开始时的意图锁定。理想情况下,您最好非事务性地进行读取,然后在更多原子事务中提交写入。