EF 6 RemoveRange не работает со списком <entity> - PullRequest
0 голосов
/ 06 мая 2020

У меня есть объект (MyEntity) с PK, который является FK другого объекта. MyEntity имеет свойство DateTime (отметка времени). Я хочу удалить из своей базы данных все записи старше указанного времени (в том числе из таблицы MyEntity и записей из других таблиц, связанных с FK).

Я пытаюсь сделать это с помощью следующего кода, но он кажется, что RemoveRange ничего не делает (даже если entities List успешно заполнен). Когда я проверяю SSMS, у меня остается то же количество строк в моих таблицах до и после запуска кода.

Что мне не хватает?

        DateTime dateNow = DateTime.Now;
        DateTime dateLimit = dateNow.AddMinutes(-1);

        List<MyEntity> entities = null;

        using (MyContext context = new MyContext())
        {
            entities = context.MyEntity.Where(x => x.Timestamp < dateLimit).ToList();
            context.MyEntity.RemoveRange(entities);

            context.SaveChanges();
        }

1 Ответ

0 голосов
/ 06 мая 2020

Я думаю, что список вне оператора using может вызывать у вас проблемы. Попробуйте следующее и посмотрите, сработает ли оно для вас.

    DateTime dateLimit = DateTime.Now.AddMinutes(-1);

    using (MyContext context = new MyContext())
    {
        var entities = context.MyEntity.Where(x => x.Timestamp < dateLimit);
        context.MyEntity.RemoveRange(entities);

        context.SaveChanges();
    }
...