c# - IDbSet.Add 和 DbEntityEntry.State = EntityState.Added 有什么区别?

标签 c# entity-framework-4.1 dbcontext

在 EF 4.1+ 中,这两行代码之间有区别吗?

dbContext.SomeEntitySet.Add(entityInstance);
dbContext.Entry(entityInstance).State = EntityState.Added;

或者他们做同样的事情?我想知道一个是否会以不同于另一个的方式影响子集合/导航属性。

最佳答案

当您使用 dbContext.SomeEntitySet.Add(entityInstance); 时,此及其所有相关实体/集合的状态设置为已添加,而 dbContext.Entry(entityInstance).State = EntityState.Added; 还将所有相关实体/集合添加到上下文中,但将它们保留为未修改状态。 因此,如果您尝试创建的实体有一个相关实体(并且它的值不为空),当您使用 Add 时,它将为该子实体创建一个新对象,而其他方式则不会。

关于c# - IDbSet.Add 和 DbEntityEntry.State = EntityState.Added 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9082922/

相关文章:

entity-framework-4.1 - 无法隐式转换类型 'System.Collections.Generic.IEnumerable<System.Collections.Generic.ICollection

c# - EF 4.1 : Removing child object from collection does not delete it - why?

c# - 设置 GetTokenInformation 返回的 TOKEN_PRIVILEGES.LUID_AND_ATTRIBUTES 数组的大小

c# - 如何使用 Windows Phone 8 的 Azure 移动服务对多个(连接的)表进行查询?

c# - 为特定数据类型重载通用方法

sql-server - 对于小型数据库站点,我应该选择 SQL CE 还是 SQL Server

c# - 对 List<T> 的每个项目执行自定义操作

entity-framework - 对象层类型 'MyProject.Model.Applications' 已经有一个生成的代理类型

c# - 无法使用来自单例的作用域服务 MyDbContext - InvalidOperationException

c# - 创建模型时不能使用上下文。 dbContext 正在其他地方使用?