mirad100 ssa
mirad100 ssa

Reputation: 15

How to update multiple rows of a database table in ASP.NET Core

I want to update multiple rows in ASP.NET Core, but I get an error:

InvalidOperationException: The entity type 'EntityQueryable' was not found. Ensure that the entity type has been added to the model.

This is my code:

var data = _db.UserTable.Where(a => a.CityIDn == selectedid);

foreach (var items in data)
{
    await Task.Run(() =>
                {
                    items.CityID = 2;
                });

    _db.Update(data);
    await _db.SaveChangesAsync();
}

Upvotes: 0

Views: 3306

Answers (3)

Ryan Naccarato
Ryan Naccarato

Reputation: 1181

Now available in EF Core 7.0, you can do Bulk Updates:

await _db.UserTable.Where(a => a.CityIDn == selectedid).ExecuteUpdateAsync(
    s => s.SetProperty(b => b.CityID, b => 2));

Upvotes: 0

Hossein
Hossein

Reputation: 3113

Try this for multiple rows:

var data = _db.UserTable.Where(a => a.CityIDn == selectedid).ToList();

foreach (var item in data)
{
    item.CityID = 2;
    _db.UserTable.Update(item);
}
await _db.SaveChangesAsync();

And for one record, try like this:

var data = _db.UserTable.Where(a => a.CityIDn == selectedid).FirstOrDefault();
if(data != null)
{
    data.CityID = 2;
    _db.UserTable.Update(data );
    await _db.SaveChangesAsync();
}

Upvotes: 4

Chen
Chen

Reputation: 5124

The content of Update should be items, it worked for me, you can have a try.

var data = _db.UserTable.Where(a => a.CityIDn == selectedid).ToList();
foreach (var items in data)
{
    await Task.Run(() =>
                {
                    items.CityID = 2;
                });

    _db.Update(items);
    await _db.SaveChangesAsync();
}

Upvotes: 0

Related Questions