EF 6 RemoveRange 不适用于 List<entity>

EF 6 RemoveRange not working with List<entity>

我有一个实体 (MyEntity),其 PK 是另一个实体的 FK。 MyEntity 有一个 DateTime(时间戳)属性。我想从我的数据库中删除所有早于给定时间的条目(包括 MyEntity table 和与 FK 链接的其他 table 的条目)。

我正在尝试使用以下代码执行此操作,但似乎 RemoveRange 什么也没做(即使 entities List 已成功填充)。当我签入 SSMS 时,我的 table 中 运行 代码前后的行数仍然相同。

我错过了什么?

        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();
        }

我认为 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();
    }