如何使用 EntityState 和从 Entity Framework 5 到 6 的值转换查询?

How to translate a query with an EntityState and a value from Entity Framework 5 to 6?

我正在将系统从 Entity Framework 5 迁移到 6,我有以下查询:

item.Count(x => x.ID < 0 && ((EntityObject)x).EntityState == System.Data.EntityState.Added)

该项表示 ID 和实体之间的 IGrouping 值。我已经测试了多种解决方案,例如:

context.ChangeTracker.Entries<EntityX>().Count(x => x.State == System.Data.Entity.EntityState.Added);

但是,如您所见,它遗漏了一个重要值,即 ID。这种情况会造成更具挑战性的情况,因为在其他情况下,我也在类似情况下检查 ID。

我找不到如何将它们结合起来,因为它们是完成完整迁移所必需的。有什么想法吗?

这是我目前的解决方案:

//Get entity to filter:
var entity = EntityX.ToList().Where(x => x.ID < 0);

//Get current values    
var entity_values = context.Entry(entity).CurrentValues;

//Filter using ChangeTracker from the context
int total = context.ChangeTracker.Entries<EntityX_Type>().Count(x => x.State == System.Data.Entity.EntityState.Added && x.CurrentValues == entity_values);

也许其他人知道更好的解决方案。