Stack Overflow Asked by Artportraitdesign1 on August 29, 2020
Is there way with EF Core Bulk extensions to only update first few 10000 rows? write message, update next batch, write message in loop until complete?
I know there is Batch Size, however if there is only 5 million to update, and I want only update a certain amount, write a message, in continual loop until complete, how can this be done?
Should I use Top or Take?
I want to write "Hello", every few batches.
while {
await _dbContext.Set<Product>()
.Where(x => x.Manufacturer == "ABC Company" &&
x.StartYear == 2019 &&
x.ProductType.ProductTypeDescription == "Electronics")
.BatchUpdateAsync(x => new Product(){
Manufacturer = "XYZ Company",
StartYear = 2020 });
Console.WriteLine("hello"):
https://github.com/borisdj/EFCore.BulkExtensions
Using EF Core 3.1.
Company does not want to use SignalR
It looks like BatchSize is only used for bulk insert. For update the expression is translated to a single SQL UPDATE statement, which doesn't operate by "batches".
Correct answer by David Browne - Microsoft on August 29, 2020
Try this.
int iEnd = 5;
for (var i = 0; i <= iEnd; i++)
{
var products = await _dbContext.Set<Product>().Where(x => x.Manufacturer == "ABC Company" &&
x.StartYear == 2019 &&
x.ProductType.ProductTypeDescription == "Electronics").Skip(i * 10000).Take(10000).ToList();
products.ForEach(x =>
{
x.Manufacturer = "XYZ Company";
x.StartYear = 2020;
});
_dbContext.Set<Product>().UpdateRange(products); // or you can use BulkUpdate here.
}
_dbContext.SaveChanges();
int i = 0;
Boolean IsContinue = true;
while (IsContinue)
{
var products = await _dbContext.Set<Product>().Where(x => x.Manufacturer == "ABC Company" &&
x.StartYear == 2019 &&
x.ProductType.ProductTypeDescription == "Electronics").Skip(i * 10000).Take(10000).ToList();
if (products.Count() == 0)
IsContinue = false;
else
{
products.ForEach(x =>
{
x.Manufacturer = "XYZ Company";
x.StartYear = 2020;
});
_dbContext.Set<Product>().UpdateRange(products); // or you can use BulkUpdate here.
}
i++;
}
_dbContext.SaveChanges();
Answered by Asherguru on August 29, 2020
1 Asked on December 13, 2021 by nisse82
2 Asked on December 13, 2021 by arthur-adrian
1 Asked on December 13, 2021 by iheb-404-notfound
1 Asked on December 13, 2021 by oyalhi
2 Asked on December 11, 2021 by dracarys
2 Asked on December 11, 2021 by yangyang
2 Asked on December 11, 2021
3 Asked on December 11, 2021 by paulo-sergio-schlogl
4 Asked on December 11, 2021 by buffaurus
3 Asked on December 11, 2021 by anis-boudieb
3 Asked on December 11, 2021 by ekhi-arzac
5 Asked on December 11, 2021 by helpmepiliizz
1 Asked on December 11, 2021 by aishwarya-shiva
1 Asked on December 11, 2021 by lordi1000
2 Asked on December 11, 2021 by sajawal-bashir
assignment operator bitwise operators c comparison operators relational operators
1 Asked on December 11, 2021
Get help from others!
Recent Answers
Recent Questions
© 2023 AnswerBun.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP