Я решил это, хотя понятия не имею, почему это работает сейчас. Если у кого-то есть объяснение этому, я весь в ушах.
Первое, что я сделал после нескольких часов проб и ошибок, - это переключился на подход RowVersion, хотя я не смог объединить этот код в используй это. Он вел себя так же - версия строки была, по-видимому, проигнорирована.
Это привело меня на путь, чтобы явно установить исходные значения после того, как произошло сопоставление:
_mapper.Map(command, entity);
//for some reason that helps! ha!
_db.Entry(entity).OriginalValues["ModifiedDate"] = command.ModifiedDate;
entity.ModifiedDate = DateTime.UtcNow;
try
{
await _db.SaveChangesAsync(cancellationToken);
}
Теперь это вызывает исключение Если RowVersion или атрибут, помеченный как параллелизм, не суммируются.
Я проверил оба значения до и после сопоставления, и они не изменили исходный ModifiedDate, поэтому я понятия не имею, почему установка его в команды ModifiedDate принесла эффект, который он теперь имеет.
Теперь я перейду к написанию некоторых модульных тестов, убедившись, что никто другой случайно не сломает это.