当执行实体框架AddOrUpdate时如何从更新中忽略一个或多个列?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了当执行实体框架AddOrUpdate时如何从更新中忽略一个或多个列?相关的知识,希望对你有一定的参考价值。
我正在使用像这样的Entity Framework AddOrUpdate
方法:
customerDbSet.AddOrUpdate(r => new { r.CustomerNumber, r.ReportNumber }, items);
此方法正在寻找CustomerNumber
和ReportNumber
,以确定是插入还是更新那些items
。但是,在某些情况下,我需要省略另外一列以进行更新。有什么办法吗?
例如:
customerDbSet.AddOrUpdate(r => new { r.CustomerNumber, r.ReportNumber }, items, c => new { c.Reviewed } /* do not update `Reviewed` column.*/ });
答案
您可以将单个属性设置为未修改,以防止更新更改它们,例如在SaveChanges()之前:
foreach (var e in db.ChangeTracker.Entries().Where(e => e.Entity is Customer))
{
e.Property(nameof(Customer.Reviewed)).IsModified = false;
}
以上是关于当执行实体框架AddOrUpdate时如何从更新中忽略一个或多个列?的主要内容,如果未能解决你的问题,请参考以下文章
将 AddOrUpdate 与 Entity Framework 6 Repository 一起使用的单元测试方法