EFCore Collection ChangeTracking

时间:2017-08-29 15:47:00

标签: c# entity-framework-core

我正在使用EFCore 2.0从SQL数据库中获取对象。该对象包含其他对象的集合。

我正在拿这样的对象:

var myRequestHistory =_dbContext.EmployeeRequestHistories.Include(x => x.Requests).FirstAsync(x => x.EmployeeId == employeeId);

我稍后在请求集合中添加了一个项目:

myRequestHistory.Requests.Add(new Request());

我需要获取从dbContext更改的项目列表,但myRequestHistory未显示更改,即使我向其集合添加了一个对象。

    var changedEntities = _dbContext.ChangeTracker.Entries<EmployeeRequestHistory>()
        .Where(x => x.State == EntityState.Added || x.State == EntityState.Deleted || x.State == EntityState.Modified).Select(x => x.Entity).ToList();

为什么我的更新对象不会出现在更改跟踪器中?如何解决此问题?

1 个答案:

答案 0 :(得分:0)

您没有添加,更新或删除任何EmployeeRequestHistories。 你做了什么 - 你在Requests表中添加了一条新记录。之后,没有修改EmployeeRequestHistories表的记录。

  

var changedEntities = _dbContext.ChangeTracker.Entries

您正在按EmployeeRequestHistory过滤 - 原因。只需按要求过滤