Я создал перезапись метода SaveChangesAsync()
, который позволяет мне отслеживать любые изменения в моей БД:
public override Task<int> SaveChangesAsync(bool acceptAllChangesOnSuccess, CancellationToken cancellationToken = default)
{
//update DateCreated
var AddedEntities = ChangeTracker.Entries().Where(E => E.State == EntityState.Added).ToList();
AddedEntities.ForEach(E =>
{
E.Property("DateCreated").CurrentValue = DateTime.Now;
});
//update DateLastModified
var EditedEntities = ChangeTracker.Entries().Where(E => E.State == EntityState.Modified).ToList();
EditedEntities.ForEach(E =>
{
E.Property("DateLastModified").CurrentValue = DateTime.Now;
});
//soft delete
var DeletedEntities = ChangeTracker.Entries().Where(E => E.State == EntityState.Deleted).ToList();
DeletedEntities.ForEach(E =>
{
E.State = EntityState.Modified;
E.Property("Deleted").CurrentValue = true;
E.Property("DateDeleted").CurrentValue = DateTime.Now;
});
return base.SaveChangesAsync(acceptAllChangesOnSuccess, cancellationToken);
}
Это прекрасно работает для того, для чего он мне нужен (т.е. обновление DateCreated, DateLastModified , Удалено, поля DateDeleted в моих таблицах сущностей), но я только что понял, что это вызывает проблемы теперь, когда я пытаюсь осуществить регистрацию пользователей и использовать. Net Таблицы идентичности. Метод SaveChangesAsync()
ищет относительные столбцы в моих таблицах идентификаторов, и я получаю следующую ошибку:
InvalidOperationException: не удалось найти свойство DateCreated для типа сущности IdentityUser. , Убедитесь, что свойство существует и включено в модель.
Есть ли простой обходной путь, который мне просто не хватает?