我知道在EF中更新一个模型,我必须先获取模型,然后更改它,然后再使用dbContext.SaveChanges(),但有时在我的Asp.net mvc项目中,我想更新表中的一个字段,但我不知道它的id,必须使用where子句获取它。但我不想连接到数据库两次,因为在ADO.net中我可以这样写:
UPDATE MyTable SET Field3 = "NewValue" WHERE Active = 1
字符串现在我想写一个linq到sql的EF,这样的工作。是存在的任何方式?谢谢
vwkv1x7d1#
你不能。EF是ORM,这意味着,你需要处理单独的对象(逐个更新它们)。看看EntityFramework.Extended库:
//update all tasks with status of 1 to status of 2 context.Tasks .Where(t => t.StatusId == 1) .Update(t => new Task { StatusId = 2 });
字符串EF Core:EntityFramework-Plus
crcmnpdw2#
你可以使用EF中的原始查询函数。
var query = "UPDATE MyTable SET Field3 = 'NewValue' WHERE Active = 1"; using (var context = new YourContext()) { context.Database.ExecuteSqlCommand(query); }
字符串
wswtfjt73#
这是你可以从EF 7开始做的事情,看看Efficient Updating了解更多细节。做你想做的事
dbContext.MyTable .Where(mt => mt.Active == 1) .ExecuteUpdate(mt => mt.SetProperty(e => e.Field3, e => "New Value"));
字符串与旧的解决方案不同,这将作为单个数据库操作进行操作。Efficient Update文章还讨论了其他用途。
3条答案
按热度按时间vwkv1x7d1#
你不能。EF是ORM,这意味着,你需要处理单独的对象(逐个更新它们)。
看看EntityFramework.Extended库:
字符串
EF Core:EntityFramework-Plus
crcmnpdw2#
你可以使用EF中的原始查询函数。
字符串
wswtfjt73#
这是你可以从EF 7开始做的事情,看看Efficient Updating了解更多细节。
做你想做的事
字符串
与旧的解决方案不同,这将作为单个数据库操作进行操作。Efficient Update文章还讨论了其他用途。