Задать вопрос
@shvedovea

C# EF SQL как сделать запрос?

Подскажите, как удалить определенные строки в базе данных, если они просрочились на 1 день.
public string value { get; set; }
        
 public DateTime date { get; set; }


вот такая структура, использую LINQ. Нужно если дата просрочилась на 1 день от текущего времени, то ее удалить. Спасибо
  • Вопрос задан
  • 159 просмотров
Подписаться 2 Простой 1 комментарий
Решения вопроса 1
on1k
@on1k
Примерно так: Class.Where(x => x.date < DateTime.Today.AddDays(-1));
Получишь все объекты и делай с ними что надо
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Через EF:
1) Получить строки по условию из БД.
2) Удалить полученные строки, вызвав метод Remove/RemoveRange на репозитории или как вы их получаете.
Да - чтобы удалить нужно сначала загрузить, это ограничение чистого EF. Данные гоняются два раза.

Через SQL:
1) Пишем SQL скрипт.
Минус - лучше избегать SQL при использовании EF, т.к. при переименовании свойств, таблиц - скрипты нужно будет искать и править отдельно. Их сложнее тестировать, изменять и т.п.

Через расширение для EF:
1) Пишем context.BulkDelete(customers, options => УСЛОВИЕ ) и все.
Ищем аналоги https://entityframework-extensions.net/bulk-delete, есть бесплатные точно.
В этом случае мы используем EF, не пишем SQL, при этом данные не гоняются дважды, код чище, понятней и т.п.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы