EF 6: Обновление DBSet / Entities после вызова context.Database.ExecuteSqlCommand (...) - PullRequest
0 голосов
/ 30 октября 2019

В моем проекте в настоящее время я использую

context.DbSet<Table>.RemoveRange(…);
context.SaveChanges(); 

для удаления нескольких энтитов.

Однако этот подход очень медленный, большую часть времени занимает .SaveChanges() и нетвозможность улучшить ситуацию.

Итак, я столкнулся с созданием прямой команды SQL для удаления элементов из базы данных с использованием

context.Database.ExecuteSQLCommand(<SQL to remove items>)

в надежде, что этот альтернативный подход будет быстрее.

Мой вопрос: каков наилучший (наиболее эффективный по времени) способ синхронизации моего локального DbSet / Entities с тем, что находится в базе данных после выполнения Команды?

1 Ответ

0 голосов
/ 30 октября 2019

Из документации:

DbSet<TEntity>.SqlQuery(String, Object[]) Method будет отслеживать, см. Документы

Или вы можете использовать FromSqlRaw из здесь

Запросы, которые используют методы FromSqlRaw или FromSqlInterpolated, следуют тем же правилам отслеживания изменений, что и любой другой запрос LINQ в EF Core. Например, если запрос проектирует объекты сущности, результаты будут отслеживаться по умолчанию.

Я не понимаю, почему просто запросить контекст после удаления таким способом не будет работать.

...