首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在使用EFCore.BulkExtensions时,如何避免向db添加重复数据?

在使用EFCore.BulkExtensions时,如何避免向db添加重复数据?
EN

Stack Overflow用户
提问于 2021-01-08 01:50:55
回答 1查看 198关注 0票数 1

我正在使用带有实体框架核心的.NET Core3.1中的EFCore.BulkExtensions

我有一个列表,其中包含数据库中已经存在的记录,以及数据库中尚不存在的新记录。

我只想将新记录添加到我的数据库中。我目前正在设法添加新的记录,但不幸的是,我也添加了旧的记录,这意味着在表中创建了副本。

我有一个名为InstagramInsightDatum的域对象,如下所示,并在我的数据库中有一个表来反映它:

代码语言:javascript
复制
public int InstagramInsightDatumId { get; set; }
public int Value { get; private set; }
public DateTime EndTime { get; private set; }
public int InstagramInsightId { get; set; }
public InstagramInsight InstagramInsight { get; set; }

我只想将新的InstagramInsightDatums添加到数据库,当它们是唯一的。我永远不需要更新这些记录,只需添加新记录即可。目前,我的代码如下所示:

我已经高亮显示了我将这些数据添加到表中的那一行,其中重复发生在红色中-在这里,你可以看到我正在用InstagramInsightDatums制作bulkInsert,并将PropertiesToExclude设置为InstagramInsightDatumId (我不是100%如何配置这个配置,但我假设这个功能是为了让我们在比较数据时忽略某些属性?)-因为从属性中删除PK应该会发现任何潜在的重复……

有没有人知道为什么这不起作用?

EN

回答 1

Stack Overflow用户

发布于 2021-07-06 18:42:54

这是一个有点老的问题,但是下面是你该怎么做的:用UpdateByProperties代替PropertiesToExclude并设置PropertiesToIncludeOnUpdate = new List<string> { "" }。如果这样做,db中不存在InstagramInsightDatumId的记录将被插入,已经存在的记录不会发生任何变化。示例如下:

代码语言:javascript
复制
BulkConfig bulkConfig = new BulkConfig
{
    UpdateByProperties = new List<string>() { nameof(InstagramInsightDatum.InstagramInsightDatumId ),
    PropertiesToIncludeOnUpdate = new List<string> { "" }
};

_dataContext.BulkInsertOrUpdate(newFormattedDatums, bulkConfig);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65617480

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档