C# 如何使用Entity Framework Core 3.1在一个事务中删除不超过X行
由于性能因素,我必须使用单个事务删除不超过一定数量的行。应首先删除与my where子句匹配的前x个元素。然后应重复该操作,直到受影响的行数不会返回0。然后整个过程就完成了。C# 如何使用Entity Framework Core 3.1在一个事务中删除不超过X行,c#,sql,asp.net-core,.net-core,entity-framework-core,C#,Sql,Asp.net Core,.net Core,Entity Framework Core,由于性能因素,我必须使用单个事务删除不超过一定数量的行。应首先删除与my where子句匹配的前x个元素。然后应重复该操作,直到受影响的行数不会返回0。然后整个过程就完成了。 如何使用Entity Framework Core 3.1编写这样的逻辑?首先,您可以从数据库中查询数据库,然后使用While循环或DO/While循环检查已删除的项目计数,并循环浏览已删除的项目,然后再删除项目。代码如下: //query database and get the deleted item
如何使用Entity Framework Core 3.1编写这样的逻辑?首先,您可以从数据库中查询数据库,然后使用While循环或DO/While循环检查已删除的项目计数,并循环浏览已删除的项目,然后再删除项目。代码如下:
//query database and get the deleted items.
//test data.
List<category> itemlist = new List<category> ();
for(int i =1; i<=100; i++)
{
itemlist.Add(new category() { ID = i, Name="name "+i });
}
var index = 0;
while (itemlist.Count > 0)
{
//create transaction and remove items
foreach (var item in itemlist.OrderBy(c=>c.ID).Take(5))
{
Console.WriteLine("Remove item " + item.Name);
itemlist.Remove(item);
}
index++;
Console.WriteLine("Count " + index);
}
//查询数据库并获取已删除的项目。
//测试数据。
List itemlist=新列表();
对于(int i=1;i 0)
{
//创建事务并删除项目
foreach(itemlist.OrderBy(c=>c.ID.Take(5))中的var项)
{
控制台.WriteLine(“删除项”+项.Name);
项目列表。删除(项目);
}
索引++;
控制台写入线(“计数”+索引);
}
While(某事是真的){执行删除}。例如:您是否有可以共享的示例代码?删除五项后,索引将打印为“计数1”,而不是“计数5”。在接下来的5次之后,它将被打印为“计数2”。我不确定这是故意的还是打字错误。