context.Entry(x).State = EntityState.Modified
和context.Update(x)
之间有什么区别?他们似乎做着完全相同的事情。
区别在于相关数据。前者只是设置实体的状态,而后者则通过导航属性对所有可到达的实体递归执行相同的操作。如文档链接中所述:
提示
使用
EntityEntry.State
属性可以仅设置单个实体的状态。例如,context.Entry(blog).State = EntityState.Modified
。
因此,如果您没有相关数据(导航属性(,则没有区别,如果您有,然后第一种方法(设置State
(可以为您提供更精细的控制(更少的副作用(,而第二种方法(Update
(可能会导致意外行为-基本上将所有相关实体及其内容标记为已修改/已添加,然后尝试插入新的或更新大量不应该插入的记录。