gpt4 book ai didi

c# - 仅对 DbContext 中的一个查询使用选项 IsolationLevel.ReadUncommited

转载 作者:行者123 更新时间:2023-12-04 15:40:08 27 4
gpt4 key购买 nike

在 .NET Core 项目中,我使用 EntityFramework,并且在我的类存储库中注入(inject)了一个 DbContext (shopContext)。我有下一个查询:

var res = shopContext.Orders.Where(x => x.Status == 1).Sum(p => p.Total);

偶尔,Orders 表正在做维护任务,表被锁定了。对于此查询,我等不及维护任务了,我需要使用事务中的 IsolationLevel.ReadUncommited 选项访问表:

using (var transaction = mutuaContext.Database.BeginTransaction(IsolationLevel.ReadUncommitted))
{
var res = shopContext.Orders.Where(x => x.Status == 1).Sum(p => p.Total);
}

问题是我只希望上下文在这些查询中使用此 IsolationLevel 配置执行查询,但下一个查询继续执行,尽管表尚未锁定。

为什么以下查询不等待表解锁?

我的代码示例:

using (var transaction = mutuaContext.Database.BeginTransaction(IsolationLevel.ReadUncommitted))
{
var res = shopContext.Orders.Where(x => x.Status == 1).Sum(p => p.Total); // this code would be executed
}

var total = shopContext.Orders.Where(x => x.Status == 0).Sum(p => p.Total); // this code would NOT be executed but is executed

我不明白上下文如何获取事务配置。我希望有人向我解释一下。

我尝试在第一次查询后调用 transaction.Commit(),但仍然无法正常工作。

最佳答案

使用

yourContext.Database.BeginTransaction(IsolationLevel.ReadUncommitted)
// your normal queries via yourContext goes here
// do not forget to end the transaction

关于c# - 仅对 DbContext 中的一个查询使用选项 IsolationLevel.ReadUncommited,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58100472/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com