原子事务中的EF多选查询

时间:2017-11-24 09:47:36

标签: c# sql-server entity-framework

虽然我对EF中的交易有疑问,但可能会使用错误的措辞。我偶然发现的大多数答案和问题都声称你应该让默认EF处理交易。

在我的情况下,我需要为特定数据查询数据库(至少)三次。 重要的是,这些数据来自同一个状态,它将在一个事务中使用另一个调用/线程中的saveChanges插入。

因为他们有多个表,一些数据列在一个列表中,一些在一个对象/行中我需要多个select语句。

我的想法是在阅读期间使用交易。我的期望是要么检索到的数据已经过时了,尽管这很好;或者在事务期间插入将导致事务回滚。

我的问题,我的假设是正确的吗?其次,这是要走的路吗?

对于我们正常的简单查询,如果不同的线程尝试插入数据,它们将被踢出。所以这是乐观的 - 我相信。

有人可以把我填满吗?

1 个答案:

答案 0 :(得分:0)

你当然可以使用与EF的交易,虽然它不是直截了当而且经常是不必要的。

您需要使用dbContext.Database.BeginTransaction()方法启动它。此方法采用IsolationLevel参数来确定锁定,脏读等。

有关隔离级别的详细信息,请参阅Microsoft Docs