我目前有一个方法,它读取数据以确定是否需要更新,然后将更新推送到数据库(注入依赖项)。该方法非常困难,我发现并发性相关的错误,即多个更新,因为多个线程在第一次更新之前读取数据。TransactionScope而不是使用锁
我用锁来解决这个问题,它工作的很好。我该如何使用TransactionScope来做同样的事情?我可以吗?它会锁定另一个线程吗?此外,我可以'锁定'一个特定的'id',因为我正在使用一个锁(我保存一个Dictionary来存储一个对象来锁定每个id)?
我使用实体框架5,虽然它隐藏了一个存储库和工作单元模式。
ReadWriterLockSlim呢?如果你有多个读取和少量写入,它比锁定要好得多。 (如何使TransactionScope线程安全?) – 2013-03-05 16:36:16
这将比只是锁(+1)更好。但是,它不允许我在其他地方安全地处理数据,或者在另一台机器上处理同一数据。 – ccook 2013-03-05 16:38:05
ReaderWriterLockSlim通常建议使用_允许不允许递归访问,并且如果允许的话,允许编写有问题的代码,这是一种危险的情况。就像他解决的问题一样危险,如果不是更多的话。 – 2013-03-05 16:38:07