Попытка сделать некоторую бизнес-логику в С#, переопределив метод EF SaveChanges.
Идея состоит в том, чтобы иметь некоторые расширенные вычисления для таких вещей, как если бы это поле изменило обновление этого поля. И это поле является суммой подкласса минус некоторые другие поля, вы знаете, продвинутый бизнес-мусор.
Так как это действительно сложно, мы хотим проверить начинку. Добавление тестов отлично работает, но обновление, которое мы не можем тестировать, поскольку мы написали интерфейс, в котором этот метод передан Подпись выглядит так:
void Update(object entity, DbPropertyValues currentValues, DbPropertyValues originalValues);
При вызове его в полном EF он прекрасно работает
public override int SaveChanges()
{
var added = ChangeTracker.Entries().Where(p => p.State == EntityState.Added).Select(p => p.Entity);
var updated = ChangeTracker.Entries().Where(p => p.State == EntityState.Modified).Select(p => p);
var context = new ChangeAndValidationContext();
foreach (var item in added)
{
var strategy = context.SelectStrategy(item);
strategy.Add(item);
}
foreach (var item in updated)
{
var strategy = context.SelectStrategy(item);
strategy.Update(item.Entity, item.CurrentValues, item.OriginalValues);
}
return base.SaveChanges();
}
Мы просто не можем понять, как пройти в оригинале DbPropertyValues или обновить для наших тестов. Пожалуйста, помогите нам выяснить, как проверить этот метод.