首页 > 解决方案 > 这是正确的..在执行'dbContext.SaveChanges()'命令时EF比较本地和上下文值以生成查询

问题描述

在此处输入图像描述

执行上述代码后注意到..只有modifiedDate值在 DB 中更改,其余部分相同。

这是生成的查询(通过 SQL 服务器分析器捕获)..

在此处输入图像描述

代表这个,我们可以说..

标签: c#entity-framework

解决方案


它不会更新值,因为它与加载数据相同。只有在检索之前您已将值更改为 false 时,它​​才会更新该值。

所以如果你想尝试看看它是否有效。

//manual update db

var selectedData = _context.TableEntity.FirstOrDefault(x => x.Id == userInputId);

if (selectedData != nul)
{
   selectedData.boolean = true;

   _context.SaveChanges();
}

还有一句忠告,您正在对一个where子句进行查询BooleanProperty == true。我建议不要更新它,因为它已经true

或者,如果您愿意,可以使用,但这将更新所有字段

_context.Entity(selectedData).State = EntityState.Modified;
_context.SaveChanges();

推荐阅读