C# 如何使用实体框架扩展库执行批量“插入忽略”

C# 如何使用实体框架扩展库执行批量“插入忽略”,c#,.net,entity-framework,insert,entity-framework-6,C#,.net,Entity Framework,Insert,Entity Framework 6,我试图在表中插入一大组对象,但我没有任何有效的方法来检查某些记录是否已经存在。每次我用这个: using Z.EntityFramework.Extensions.Core; ... await ac.BulkInsertAsync(query, (o) => { o.?? }); 它只是在每次找到重复项时停止插入。有没有一种方法可以一次运行所有查询而不在第一个错误时停止,或者直接应用忽略?您应该检查插入fnotexists选项。仅插入不存在的记录 using Z.EntityFrame

我试图在表中插入一大组对象,但我没有任何有效的方法来检查某些记录是否已经存在。每次我用这个:

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

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

您应该检查插入fnotexists选项。仅插入不存在的记录

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;
});

您应该检查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;
});

对,我以前不知怎么错过了这个选择。谢谢它是否仍应抛出
重复条目[…]
异常?它不应抛出,除非数据库中的键与用于合并的键不同。你还有例外吗?是的,我有。我的表中的一个字段上有一个
唯一的
键。如何将其设置为批量操作?它似乎仍然不起作用。我仍然在这一行上得到键“IX_UniversalId”的重复条目“R1550672”。
等待ac.BulkInsertAsync(查询,(o)=>{o.ColumnPrimaryKeyExpression=p=>新的{p.Id,p.UniversalId};o.InsertIfNotExists=true;})对,我以前不知怎么错过了这个选项。谢谢它是否仍应抛出
重复条目[…]
异常?它不应抛出,除非数据库中的键与用于合并的键不同。你还有例外吗?是的,我有。我的表中的一个字段上有一个
唯一的
键。如何将其设置为批量操作?它似乎仍然不起作用。我仍然在这一行上得到键“IX_UniversalId”的重复条目“R1550672”。
等待ac.BulkInsertAsync(查询,(o)=>{o.ColumnPrimaryKeyExpression=p=>新的{p.Id,p.UniversalId};o.InsertIfNotExists=true;})