Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用Entity Framework Core 3.1在一个事务中删除不超过X行_C#_Sql_Asp.net Core_.net Core_Entity Framework Core - Fatal编程技术网

C# 如何使用Entity Framework Core 3.1在一个事务中删除不超过X行

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

由于性能因素,我必须使用单个事务删除不超过一定数量的行。应首先删除与my where子句匹配的前x个元素。然后应重复该操作,直到受影响的行数不会返回0。然后整个过程就完成了。
如何使用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”。我不确定这是故意的还是打字错误。