首页 > 解决方案 > 使用 DbSet 时是否也将主键属性标记为已修改.Update() 方法?

问题描述

DbSet.Update() 的定义是:

“开始跟踪给定的实体…………实体的所有属性都将被标记为已修改。”

它包括主键属性吗?如果主键属性也标记为已修改,为什么主键不在生成的 SQL 中Set [primarykey] = XXX?(其中 XXX 应该与数据库中的主键值相同)

标签: c#entity-framework-core

解决方案


我怀疑答案是否定的,但你可以自己检查一下。

DbSet.Update返回“EntityEntry实体的 The”,您可以使用它来查看它已标记为已修改的属性。例如:

var entity = dbContext.MyTable.Update(myRecord);
foreach (var modifiedProperty in entity.Properties.Where(p => p.IsModified)) {
    Console.Write($"The {modifiedProperty.Metadata.Name} property is marked as modified");
}

推荐阅读