[英]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核心批量擴展有什么辦法嗎
如果庫不支持這種匹配,則沒有解決方案。 因此考慮將第三方庫更改為另一個庫或等待功能實現。
順便說一句,我已經在linq2db
和EF Core
linq2db.EntityFrameworkCore之間創建了這座橋,所以如果你沒有其他選擇,這個應該可以工作。
context.Customers
.ToLinqToDBTable()
.Merge()
.Using(entities)
.On((t, s) => t.CustomerId == s.CustomerId || t.CustomerName == s.CustomerName)
.InsertWhenNotMatched()
.UpdateWhenMatched()
.Merge();
檢查InsertWhenNotMatched
和UpdateWhenMatched
的重載 - 在這里您可以自定義應該插入或更新哪些字段,甚至可以基於目標表中的值。
免責聲明:我是實體框架擴展的所有者
該庫不是免費的,但可以輕松涵蓋自定義鍵等場景。 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.