Entity framework core context.Entry(x).State=EntityState.Modified与context.Update(x)有什么区别?

Entity framework core context.Entry(x).State=EntityState.Modified与context.Update(x)有什么区别?,entity-framework-core,Entity Framework Core,context.Entry(x).State=EntityState.Modifiedvscontext.Update(x)?它们似乎做了完全相同的事情。不同之处在于它们的不同之处。前者只设置实体的状态,而后者通过导航属性递归地对所有可访问的实体执行相同的操作。如文档链接中所述: 提示 使用EntityEntry.State属性仅设置单个实体的状态。例如,context.Entry(blog.State=EntityState.Modified 因此,如果您没有相关的数据(导航属性),那么没有区

context.Entry(x).State=EntityState.Modified
vs
context.Update(x)
?它们似乎做了完全相同的事情。

不同之处在于它们的不同之处。前者只设置实体的状态,而后者通过导航属性递归地对所有可访问的实体执行相同的操作。如文档链接中所述:

提示

使用
EntityEntry.State
属性仅设置单个实体的状态。例如,
context.Entry(blog.State=EntityState.Modified


因此,如果您没有相关的数据(导航属性),那么没有区别,如果您有,那么第一种方法(设置
状态
)提供了更精细的控制(副作用更少),而第二种方法(
更新
)可能导致意外行为-基本上是将所有相关实体及其内容标记为已修改/添加,然后尝试插入新的或更新大量不应该插入的记录。

区别在于。前者只设置实体的状态,而后者通过导航属性递归地对所有可访问的实体执行相同的操作。如文档链接中所述:

提示

使用
EntityEntry.State
属性仅设置单个实体的状态。例如,
context.Entry(blog.State=EntityState.Modified

因此,如果您没有相关的数据(导航属性),那么没有区别,如果您有,那么第一种方法(设置
状态
)提供了更精细的控制(副作用更少),而第二种方法(
更新
)可能会导致意外行为-基本上是将所有相关实体及其内容标记为已修改/添加,然后尝试插入新的或更新大量不应该插入的记录