Entity Framework Plus Batch Delete on DateTime Не работает - PullRequest
1 голос
/ 06 августа 2020

Я столкнулся со сценарием, когда мне нужно выполнить массовое удаление в указанную c дату и время. Кажется, что функция пакетного удаления EF + неправильно сравнивает дату и время и выполняет действие.

Она отлично работает с другими типами полей, но только не с DateTime. Есть ли какое-то специальное форматирование, которое я должен сделать, чтобы правильно выполнить это действие?

Серверная таблица SQL серверная имеет FileCreatedDate как DateTime2(7). И все записи содержат дату / время DateTime.UtcNow, указанные в коде, поскольку первоначальный проход до этого кода создал эти записи. Это запасной вариант для очистки записей, созданных в случае возникновения ошибки.

У меня есть следующий код:

var fileCreatedDate = DateTime.UtcNow;

using (var db = new MyContextDb())
{
    db.SampleModel.Where(e => e.FileCreatedDate == fileCreatedDate).Delete();
}

Этот код не работает. Он не удаляет записи, время которых соответствует критериям.

Есть идеи, в чем может быть проблема?

1 Ответ

0 голосов
/ 06 августа 2020

Можете ли вы попробовать удалить объекты, используя диапазон?

вот так:

db.SampleModel.RemoveRange(db.SampleModel.Where(e => e.FileCreatedDate == fileCreatedDate));
db.SaveChanges();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...