Предотвратить перезапись SaveChagesAsyn c () при регистрации пользователя - PullRequest
1 голос
/ 26 марта 2020

Я создал перезапись метода 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. , Убедитесь, что свойство существует и включено в модель.

Есть ли простой обходной путь, который мне просто не хватает?

...