[英]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.