在 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/