当执行实体框架AddOrUpdate时如何从更新中忽略一个或多个列?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了当执行实体框架AddOrUpdate时如何从更新中忽略一个或多个列?相关的知识,希望对你有一定的参考价值。

我正在使用像这样的Entity Framework AddOrUpdate方法:

customerDbSet.AddOrUpdate(r => new { r.CustomerNumber, r.ReportNumber }, items);

此方法正在寻找CustomerNumberReportNumber,以确定是插入还是更新那些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时如何从更新中忽略一个或多个列?的主要内容,如果未能解决你的问题,请参考以下文章