Entity Framework Extensions Ignore OnSynchronizeMatched AndOneNotCondition Expression

Description

The IgnoreOnSynchronizeMatchedAndOneNotConditionExpression is the inverse of SynchronizeMatchedAndNotConditionExpression

  • The SynchronizeMatchedAndOneNotConditionExpression allows you to perform the bulk synchronize operation if the specified property value is not equal to the database value.
  • So by default, all columns are included in IgnoreOnSynchronizeMatchedAndOneNotConditionExpression but not the one you choose to ignore.

The following example updates all those records in which the ModifiedDate property is not equal to a database value. It ignores the specified properties in IgnoreOnSynchronizeMatchedAndOneNotConditionExpression if their value is equal to the database or not.

using (var context = new EntityContext())
{
    var customers = context.Customers.ToList();
    customers.ForEach(x => { x.Name += "_Updated"; x.Description += "_Updated"; x.IsActive = false; });
    customers.Take(2).ToList().ForEach(x => { x.ModifiedDate = DateTime.Now; });

    context.BulkUpdate(customers, options => 
    {
        options.IgnoreOnUpdateMatchedAndOneNotConditionExpression = c => new 
        {
            c.Name, 
            c.Description, 
            c.CreatedDate, 
            c.IsActive 
        };
    });
}

Try it: EF Core | EF6

  • It will update all the records except for the last record.
  • The ModifiedDate property is only updated for the first two records and not for the last record.

Last updated: 2023-03-01
Author:


Contents