У меня есть API, созданный с использованием ASP.NET CORE.после того, как оно получает данные в клиентские приложения (веб-приложения JS), например:
public IEnumerable<Article> GetAvaliableArticles()
{
ThrowIfDisposed();
return Entities.Where(s => s.IsAvailable).OrderBy(x => x.DisplayOrder);
}
Когда клиентское приложение хочет обновить каждую статью, я присоединяю сущность обратно к контексту:
Context.Attach(entity);
if(entity.GetType().GetProperty("ConcurrencyStamp") != null)
{
var propertyInfo = entity.GetType().GetProperty("ConcurrencyStamp");
propertyInfo.SetValue(entity, Guid.NewGuid().ToString());
}
Context.Update(entity);
await Context.SaveChangesAsync(cancellationToken);
Однако, когда я пытаюсь проверить изменение EF, оно не получает предыдущее значение Article.Исходные и новые значения совпадают.
switch (entry.State)
{
case EntityState.Added:
auditEntry.NewValues[propertyName] = property.CurrentValue;
break;
case EntityState.Deleted:
auditEntry.OldValues[propertyName] = property.OriginalValue;
break;
case EntityState.Modified:
if (property.IsModified)
{
auditEntry.OldValues[propertyName] = property.OriginalValue;
auditEntry.NewValues[propertyName] = property.CurrentValue;
}
break;
}
Я хочу, чтобы property.OriginalValue
было предыдущим значением перед обновлением.