使用DbSet <T> .Update()方法时,主键属性是否也标记为已修改?

时间:2019-08-13 01:01:10

标签: c# entity-framework-core

DbSet.Update()的定义是:

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

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

1 个答案:

答案 0 :(得分:3)

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

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

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");
}