如何使用Entity Framework基于创建日期升序删除1000条记录?

时间:2017-11-02 04:18:28

标签: c# sql entity-framework linq sql-server-2014

我需要根据创建的日期从表中删除最后1000条记录,然后从不同的表中插入新的1000条记录。

最好的方法是什么?

public void mymethod()
{
     // TestBasketRequests (delete thousands records from here)
     // Call Delete();
}

public void Delete(IList<TestBasketRequest> TestBasketRequests)
{
    using (var dbContext = new myContext())
    {
        dbContext.Entry(TestBasketRequests).State = EntityState.Deleted;
        dbContext.SaveChanges();
    }
}

1 个答案:

答案 0 :(得分:2)

RemoveRange()

方法用于从数据库中删除多个项目。在方法中,您必须使用

来获取最后1000个项目
TakeLast() 

只会根据添加到数据库的顺序返回最后一项。

在你的mymethod()里面你必须写这样的东西

var lastN = MyDbContext.MyDbSet
                   .OrderByDescending(g => g.CreateDate)
                   .Take(1000);

MyDbContext.MyDbSet.RemoveRange(lastN);

我没有测试此代码。您可以根据自己的要求进行更改。