是否可以使用EF Core和LINQ执行简单的SQL UPDATE运算符? 由于类型和重构安全性,我想使用LINQ。我需要避免在应用程序和数据库驱动程序之间来回加载大量对象 基本上我需要这样的smth:
DB.Items.Update(i => i.Value = 5).Where(i => i.Flag > 5);
答案 0 :(得分:1)
您可以使用轻量级EFBulk nuget package。
示例代码:
var count = db.Items.Where(s => s.Title == "Game")
.Update(o => new Item { Price = 999, Title = "Tablet" }, db);
答案 1 :(得分:0)
实体框架适用于模型,因此您无法直接更新linq查询的值。您可以做的是使用Attach()命令创建包含您想要更新的值的模型,并将它们保存到数据库
答案 2 :(得分:-1)
迄今为止找到的最佳解决方案是EntityFramework-Plus https://github.com/zzzprojects/EntityFramework-Plus
正如@Smit指出的那样,它可以在未来的EFCore中实现。 可以在此处跟踪进度https://github.com/aspnet/EntityFramework/issues/795
答案 3 :(得分:-1)
您不需要获取所有记录来更新。
只需像这样创建一个可查询的:
IQueryable<Item> items = DB.Items.Where(i => i.Flag > 5).Select(r => new Item
{
.,
.,
.,
Value = 5
});
DB.Items.UpdateRange(items);
基本上 IQueryable 是查询的数据库表示。 它应该更新这些项目而不获取那些。