如何在 ASP.NET Core 中更新数据库表的多行

问题描述 投票:0回答:3

我想更新 ASP.NET Core 中的多行,但出现错误:

InvalidOperationException:找不到实体类型“EntityQueryable”。确保实体类型已添加到模型中。

这是我的代码:

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();
}
entity-framework asp.net-core entity-framework-core sql-update
3个回答
3
投票

对多行尝试此操作:

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();

对于一条记录,请尝试这样:

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

0
投票

更新的内容应该是

items
,对我有用,你可以试试。

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();
}

0
投票

现已在 EF Core 7.0 中提供,您可以进行批量更新

await _db.UserTable.Where(a => a.CityIDn == selectedid).ExecuteUpdateAsync(
    s => s.SetProperty(b => b.CityID, b => 2));
© www.soinside.com 2019 - 2024. All rights reserved.