实体框架核心更新不变字段

克里斯

我不确定这是否是关于实体框架的问题,还是audit.net库的工作方式,但是我猜测这与我如何使用EF执行更新有关。我的目标是仅捕获记录的实际更改,但即使旧值和新值相同,也要捕获所有更改。

基本上是尽可能简化

var existing = context.Appl.FirstOrDefault(a => a.Id == id);
context.Appl.Update(existing);
context.SaveChanges();

(什么都没改变)

Audit.Net更改日志说每个字段都已更改,看起来像

   "Changes": [
      {
        "ColumnName": "FOO",
        "OriginalValue": "",
        "NewValue": ""
      },
      ..... many more
伊万·斯托夫

我的目标是仅捕获记录的实际更改

然后,您不应该使用该Update方法。

根据Update方法文档

开始跟踪处于Modified状态的给定实体,以便在SaveChanges()调用该实体时将在数据库中对其进行更新

实体的所有属性将被标记为Modifyed若要仅将某些属性标记为已修改,请使用Attach(Object)来开始跟踪处于“未更改”状态的实体,然后使用返回值EntityEntry将所需的属性标记为已修改。

方法的主要用法Update在使用Disconnected Entities执行所谓的强制更新由于您的实体是从上下文中检索的(换句话说,是由上下文跟踪的),因此,您所需要做的就是设置新值。变更跟踪器将检测是否存在实际的属性变更,并发出修改后的值的命令(如果所有当前值均等于原始值,则根本不发出命令)。existingUPDATEUPDATE

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章