EF Core:如何计算现有行的添加列的值

EF Core: How to calculate values for added column for existing rows

我的实体中有一个 NotMapped 属性 CountUsed

出于某种原因(我使用了一些 UI 控件)我将其切换为正常的 属性,现在我在添加相关子实体时更新 CountUsed 的值到此实体(目标<-条目)。

这么好,但是对于我数据库中的旧行(其中的值之前是动态计算的,而不是从数据库中获取的 table),我现在在这些列中没有任何值。只有当我添加或删除相关条目时,它才会计算出一个列值。

所以我的想法是,在迁移 Up() 方法中添加一些代码,以计算现有行的列值。

我找到了一个UpdateData()方法:

  migrationBuilder.UpdateData(
        table: "Targets", 
        keyColumn: target_id, 
        keyValue: rowId, 
        column: "CountUsed", 
        value: calculatedCountUsedValue);

但是查看参数,我的情况看起来不合适table,或者我是否必须先获取我的项目,遍历它们并为每个现有行调用此方法?

也许有其他更好的方法?

我现在可以使用 Sql() 方法更新现有行来解决它:

migrationBuilder.Sql("UPDATE Targets SET CountUsed = (SELECT COUNT (*) FROM Entries WHERE Entries.TargetId = Targets.TargetId)");