簡體   English   中英

Entity Framework Core(7) 批量更新

[英]Entity Framework Core(7) bulk update

如何使用 EF Core(7) 批量更新實體?

我不想從數據庫服務器加載實體、修改屬性和更新。 我只想 EF 生成適當的 UPDATE 語句。

正如所接受的答案所指出的,Entity Framework Core不支持直接在數據庫中進行更新。

免責聲明 :我是項目Entity Framework Plus的所有者

但是,EF +已經支持查詢批量更新而不在上下文中加載實體(支持:EF Core,EF6,EF5)

// using Z.EntityFramework.Plus; // Don't forget to include this.

// UPDATE all users inactive for 2 years
ctx.Users.Where(x => x.LastLoginDate < DateTime.Now.AddYears(-2))
         .Update(x => new User() { IsSoftDeleted = 1 });

Wiki: 實體框架批量更新

這是 EF7 ExecuteUpdateAsync語法:

var updatedColumns = 
    await
    context
    .Blog
    .ExecuteUpdateAsync(p => p.SetProperty(s => s.Title, s => "Wow"));

在 EF7 的新增功能、ExecuteUpdate 和 ExecuteDelete(批量更新)文檔中了解有關批量操作的更多信息。

在我發布這個答案的那天,有了我掌握的信息,看起來它work in progress

請參閱https://github.com/aspnet/EntityFramework/issues/795

EF不提供批量更新機制。 提案如下。 Context.Customers.Update()。Where。(c => c.CustType ==“New”)。Set(x => x.CreditLimit = 0)

你會考慮這個功能嗎? 更多詳細信息: https//entityframework.codeplex.com/workitem/52

它在 efcore 7 中發布

await context.Blogs.ExecuteUpdateAsync(
    s => s.SetProperty(b => b.Name, b => b.Name + " *Featured!*"));

生成適當的:

UPDATE [b]
    SET [b].[Name] = [b].[Name] + N' *Featured!*'
FROM [Blogs] AS [b]

示例來自官方dos

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM