簡體   English   中英

實體框架核心批量擴展:BulkInsertOrUpdate

[英]Entity Framework core bulk Extensions: BulkInsertOrUpdate

我對 entityfremawork 核心批量擴展功能有要求。 當我們使用 _context.BulkInsertOrUpdate(Customers); 我沒有在 sql 客戶表上創建任何主鍵。 所以我想像下面這樣在外部嘗試 map 目標列(插入或更新)

context.BulkInsertOrUpdate()
  .MatchTargetOn(x => x.CustomerId)
  .MatchTargetOn(x => x.CustomerName)
  .Commit(db.Database.Connection);

ef核心批量擴展有什么辦法嗎

如果庫不支持這種匹配,則沒有解決方案。 因此考慮將第三方庫更改為另一個庫或等待功能實現。

順便說一句,我已經在linq2dbEF Core linq2db.EntityFrameworkCore之間創建了這座橋,所以如果你沒有其他選擇,這個應該可以工作。

context.Customers
   .ToLinqToDBTable()
   .Merge()
   .Using(entities)
   .On((t, s) => t.CustomerId == s.CustomerId || t.CustomerName == s.CustomerName)
   .InsertWhenNotMatched()
   .UpdateWhenMatched()
   .Merge();

檢查InsertWhenNotMatchedUpdateWhenMatched的重載 - 在這里您可以自定義應該插入或更新哪些字段,甚至可以基於目標表中的值。

免責聲明:我是實體框架擴展的所有者

該庫不是免費的,但可以輕松涵蓋自定義鍵等場景。 InsertOrUpdate相當於BulkMerge

例子:

context.BulkMerge(list,  options => options.ColumnPrimaryKeyExpression = c => 
    new { c.CustomerId, c.CustomerName });

這是一個在線示例: https://dotnetfiddle.net/Lzbh2H

暫無
暫無

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

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