C# EF 6在同一作用域内混合ExecuteSqlCommand和LINQ to EF时不使用事务作用域

C# EF 6在同一作用域内混合ExecuteSqlCommand和LINQ to EF时不使用事务作用域,c#,entity-framework,entity-framework-6,transactionscope,C#,Entity Framework,Entity Framework 6,Transactionscope,我正在使用EF 6.1和.NET 4.6.1 如果我在dbContext上的using块中创建了一个带有TransactionScopeAsync的事务作用域,然后直接使用dbContext.database.ExecuteSqlCommand更新数据库中的数据,然后在同一事务作用域中使用LINQ查询从数据库中调用同一实体,它不会显示更新的数据 例如: using (MyDbContext dbContext = new MyDbContext()) { using (Transacti

我正在使用
EF 6.1
.NET 4.6.1

如果我在dbContext上的using块中创建了一个带有
TransactionScopeAsync
的事务作用域,然后直接使用
dbContext.database.ExecuteSqlCommand
更新数据库中的数据,然后在同一事务作用域中使用
LINQ
查询从数据库中调用同一实体,它不会显示更新的数据

例如:

using (MyDbContext dbContext = new MyDbContext())
{
    using (TransactionScope txScope = new TransactionScope(TransactionScopeAsyncFlowOption.Enabled))
    {
        dbContext.Database.ExecuteSqlCommand("UPDATE TestTable SET TestText = 'A' WHERE ID = 1;");
        var testObject_A = (from t in dbContext.TestTable where ID == 1 select t.TestText).FirstOrDefault();
        // THIS WILL HAVE "A"

        dbContext.Database.ExecuteSqlCommand("UPDATE TestTable SET TestText = 'B' WHERE ID = 1;");
        var testObject_B = (from t in dbContext.TestTable where ID == 1 select t.TestText).FirstOrDefault();
        // THIS WILL HAVE "A" <-- It should have been a "B"

        txScope.Complete();
    }
}
使用(MyDbContext=new MyDbContext())
{
使用(TransactionScope txScope=new TransactionScope(TransactionScopeAsyncFlowOption.Enabled))
{
dbContext.Database.ExecuteSqlCommand(“更新TestTable SET TestText='A',其中ID=1;”;
var testObject_A=(从dbContext.TestTable中的t开始,其中ID==1选择t.TestText);
//这将有一个“A”
dbContext.Database.ExecuteSqlCommand(“更新TestTable集TestText='B',其中ID=1;”;
var testObject_B=(从dbContext.TestTable中的t开始,其中ID==1选择t.TestText);
//这将有一个“A”