gpt4 book ai didi

c# - EF Core DB 上下文跟踪生命周期和范围

转载 作者:行者123 更新时间:2023-11-30 21:30:42 24 4
gpt4 key购买 nike

我在 ASP.NET Core 2.2 和 EF 中遇到了一些行为,我不确定它是否有意为之,尤其是它是否安全。

给出以下代码:

{ 
//...

if (condition)
{
var result = await MyDbContext.MyTable
.Where(data => data.Id == id)
.FirstOrDefaultAsync();

result.MyColumn -= 42;
}

//...more MyDbContext operations

await MyDbContext.SaveChangesAsync();

//...
}

EF Core 成功查询数据库并相应地更新 MyColumn 字段(在本例中减去 42),即使 result 变量声明和减法操作是在单独的 block 中完成的(并且范围隐式).

这是 EF 操作方式的预期且可靠的行为,还是应该避免并应在 block 内添加另一个保存操作?

最佳答案

这是预期的行为。所做的所有更改都保存在 DbContext 级别。

因此,当您执行 result.MyColumn -= 42; 时,您实际上是在更新底层 DbContext 对象,该对象跟踪所有更改,并知道是否需要更新数据库

关于c# - EF Core DB 上下文跟踪生命周期和范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54021565/

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