如何使用EF Core内部的集合更新分离的对象?

时间:2016-08-27 04:02:56

标签: c# entity-framework entity-framework-core

我有一个包含集合的分离对象。我正在使用此代码附加它

EntityEntry dbEntityEntry = _context.Entry<T>(entity);
dbEntityEntry.State = EntityState.Modified;

如果我更改大部分字段,分离对象会完美保存..问题在于此对象具有的集合。集合的更改不会保留。我已经看到执行的查询,它onl触及“主”表。所有依赖关系都不会更新

有没有办法更新分离对象的整个树?

2 个答案:

答案 0 :(得分:3)

问题:

EF不知道已更改的collectionnavigation properties。通过将dbEntityEntry的状态设置为EntityState.Modified,EF只知道对象{{ 1}}已被更改。这意味着EF只会更新dbEntityEntry,而不会更新dbEntityEntry

解决方案:

您可以迭代当前navigation properties的所有collection (or navigation properties),并将实体状态设置为dbEntityEntry

另一种解决方案:也请看一下。可以帮到你。

Working with Self-Tracking Entities

答案 1 :(得分:0)

我可以建议我在某个框架中找到的方式。因为实体更新存在许多问题,所以如果使用ASP。在更新之前,只需调用此方法

 protected virtual void AttachIfNot(TEntity entity)
    {
        if (!_dbSet.Local.Contains(entity))
        {
            _dbSet.Attach(entity);
        }
    }

对于导航属性,只需在集合中迭代即可。