虽然我对EF中的交易有疑问,但可能会使用错误的措辞。我偶然发现的大多数答案和问题都声称你应该让默认EF处理交易。
在我的情况下,我需要为特定数据查询数据库(至少)三次。 重要的是,这些数据来自同一个状态,它将在一个事务中使用另一个调用/线程中的saveChanges插入。
因为他们有多个表,一些数据列在一个列表中,一些在一个对象/行中我需要多个select语句。
我的想法是在阅读期间使用交易。我的期望是要么检索到的数据已经过时了,尽管这很好;或者在事务期间插入将导致事务回滚。
我的问题,我的假设是正确的吗?其次,这是要走的路吗?
对于我们正常的简单查询,如果不同的线程尝试插入数据,它们将被踢出。所以这是乐观的 - 我相信。
有人可以把我填满吗?
答案 0 :(得分:0)
你当然可以使用与EF的交易,虽然它不是直截了当而且经常是不必要的。
您需要使用dbContext.Database.BeginTransaction()
方法启动它。此方法采用IsolationLevel
参数来确定锁定,脏读等。
有关隔离级别的详细信息,请参阅Microsoft Docs