仅使用 Z.EntityFramework.Plus' SingleUpdate 方法更新特定列

Only update specific column using Z.EntityFramework.Plus' SingleUpdate method

在我的项目中,我想使用 Z.EntityFramework.Plus 更新特定数据集的列。我正在使用以下代码:

await db.Features.SingleUpdateAsync(new Feature()
{
    ID = featureInfo.ID,
    Unit = unit,
});

Feature class 由多列组成。我只想更新给定 IDUnit 列。但是,此语句总是尝试将所有其他列重置为 null。所以我认为我误解了这种方法的一般工作原理。

如何只更新给定的单位值而不修改(或必须加载)所有其他值?

您可以使用 WhereUpdateFromQuery:

来实现
await db.Features.Where(x => x.ID == featureInfo.ID).UpdateFromQuery(x => new Feature()
{
    Unit = unit
});

对于多个ID,如果单位是常量:

await db.Features.Where(x => ids.Contains(x.ID)).UpdateFromQuery(x => new Feature()
{
    Unit = unit
});

如果你有 thousand/million 个 ID,也可以使用 WhereBulkContains 方法(这个不是免费的):

await db.Features.WhereBulkContains(ids).UpdateFromQuery(x => new Feature()
{
    Unit = unit
});

编辑:回复评论

Is there any documentation for the SingleUpdateAsync method I was using

没有文档。它的工作方式与 BulkUpdate 完全相同,但允许您传递单个实体而不是列表(这是唯一的区别)。