我目前有一种方法可以读取数据以确定是否需要更新,然后将更新推送到数据库(依赖注入)。该方法受到了很大的打击,我发现了与并发相关的错误,即多次更新,因为多个线程在第一次更新之前读取数据。
我用锁解决了这个问题,效果很好。我怎样才能使用 TransactionScope 来做同样的事情?我可以吗?它会像锁一样阻塞另一个线程吗?此外,我可以像使用锁一样“锁定”一个特定的“id”吗(我保留一个字典,存储一个要为每个 id 锁定的对象)?
我正在使用 Entity Framework 5,尽管它被存储库和工作单元模式隐藏。