如何使用实体框架扩展库执行批量“插入 IGNORE”



我正在尝试将大量对象插入表中,但我没有任何有效的方法来检查某些记录是否还不存在。每次我使用它时:

using Z.EntityFramework.Extensions.Core;
...
await ac.BulkInsertAsync(query, (o) => { o.?? });

它只是在每次找到重复项时停止插入。有没有办法一次运行所有查询,而不会在第一个错误时停止,或者直接应用IGNORE

您应该检查 InsertIfNotExists 选项。只会插入尚不存在的记录。

using Z.EntityFramework.Extensions.Core;
...
await ac.BulkInsertAsync(query, (o) => { o.InsertIfNotExists = true });

回答子问题

我在其中一个字段的表中有一个唯一键。如何为批量操作设置它?

您可以使用 ColumnPrimaryKeyExpression 选项自定义键。

ctx.BulkInsert(list, options =>
{
    options.ColumnPrimaryKeyExpression = x => new { x.ColumnKey1, x.ColumnKey2 };
    options.InsertIfNotExists = true;
});

最新更新