我正在将系统从Entity Framework 5迁移到6,并且有以下查询:
item.Count(x => x.ID < 0 && ((EntityObject)x).EntityState == System.Data.EntityState.Added)
该项表示ID和Entity之间的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);
也许其他人都知道更好的解决方案。