首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >EFCore.BulkExtensions如何在条件下更新记录?

EFCore.BulkExtensions如何在条件下更新记录?
EN

Stack Overflow用户
提问于 2022-05-29 13:27:19
回答 1查看 555关注 0票数 1

我使用EFCore.BulkExtensions来插入和更新表中的记录。但我对更新记录有问题。

例如,我有15条记录(10条要插入,5条要更新)。我需要插入10,但只更新2,因为3条记录在UpdatedAt属性中有旧值(数据库包含更多最新数据)。

如果我像这样使用EFCore.BulkExtensions

代码语言:javascript
复制
_dbContext.BulkInsertOrUpdateAsync(entitiesList, _bulkConfig);

将插入10项记录,并更新5项记录。因此,数据库中的数据将由旧的数据更新。

为了解决我的问题,我想要这样的东西:

代码语言:javascript
复制
_dbContext.BulkInsertOrUpdateAsync(entitiesList, _bulkConfig,
    (oldRecord, newRecord) => newRecord.UpdatedAt > oldRecord.UpdatedAt);

你能提出一些用EFCore.BulkExtensions解决这个问题的有效方法吗?

EN

回答 1

Stack Overflow用户

发布于 2022-05-30 10:38:30

这不是对EFCore.BulkExtensions的直接回答,而是使用linq2db.EntityFrameworkCore的替代方法。请注意,我是其中一个创造者。

代码语言:javascript
复制
await context.SomeTable
    .ToLinqToDBTable()
    .Merge()
    .Using(entitiesList)
    .On((t, s) => t.Id == s.Id)
    .InsertWhenNotMatched()
    .UpdateWhenMatchedAnd((t, s) => s.UpdatedAt > t.UpdatedAt)
    .MergeAsync();

为EF Core 2.x选择适当的软件包2.x,为EF Core 3.1.x选择3.x包,等等。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72424044

复制
相关文章

相似问题

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