我正在使用带有实体框架核心的.NET Core3.1中的EFCore.BulkExtensions。
我有一个列表,其中包含数据库中已经存在的记录,以及数据库中尚不存在的新记录。
我只想将新记录添加到我的数据库中。我目前正在设法添加新的记录,但不幸的是,我也添加了旧的记录,这意味着在表中创建了副本。
我有一个名为InstagramInsightDatum的域对象,如下所示,并在我的数据库中有一个表来反映它:
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应该会发现任何潜在的重复……
有没有人知道为什么这不起作用?
发布于 2021-07-06 18:42:54
这是一个有点老的问题,但是下面是你该怎么做的:用UpdateByProperties代替PropertiesToExclude并设置PropertiesToIncludeOnUpdate = new List<string> { "" }。如果这样做,db中不存在InstagramInsightDatumId的记录将被插入,已经存在的记录不会发生任何变化。示例如下:
BulkConfig bulkConfig = new BulkConfig
{
UpdateByProperties = new List<string>() { nameof(InstagramInsightDatum.InstagramInsightDatumId ),
PropertiesToIncludeOnUpdate = new List<string> { "" }
};
_dataContext.BulkInsertOrUpdate(newFormattedDatums, bulkConfig);https://stackoverflow.com/questions/65617480
复制相似问题