Chr*_*ris 4 entity-framework-core audit.net
我不确定这是关于Entity Framework的问题,还是audit.net库的工作原理,但我猜测它与我如何使用EF进行更新有关.我的目标是仅捕获记录的实际更改,但它将捕获所有内容作为更改,即使旧值和新值相同也是如此.
如果我这样做,基本上是为了尽可能地简化它
var existing = context.Appl.FirstOrDefault(a => a.Id == id);
context.Appl.Update(existing);
context.SaveChanges();
Run Code Online (Sandbox Code Playgroud)
(什么都没改变)
Audit.Net更改日志表示每个字段都已更改,看起来像
"Changes": [
{
"ColumnName": "FOO",
"OriginalValue": "",
"NewValue": ""
},
..... many more
Run Code Online (Sandbox Code Playgroud)
我的目标是仅捕获记录的实际更改
那你就不应该使用这个Update方法.
根据Update方法文档:
开始跟踪状态中的给定实体,
Modified以便在SaveChanges()调用时在数据库中更新它.实体的所有属性都将标记为已修改.要仅将某些属性标记为已修改,请使用
Attach(Object)开始跟踪处于"未更改"状态的实体,然后使用返回EntityEntry标记所需的已修改属性.
方法的主要用法Update是在使用Disconnected Entities时执行所谓的强制更新.由于您的实体是从上下文中检索的(换句话说,是由上下文跟踪),因此您只需要设置新值.更改跟踪器将检测是否存在实际属性更改,并将仅发出具有已修改值的命令(如果所有当前值均等于原始值,则根本不发出命令).existingUPDATEUPDATE
| 归档时间: |
|
| 查看次数: |
1101 次 |
| 最近记录: |