如何使用 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);
也许其他人知道更好的解决方案。
我正在将系统从 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);
也许其他人知道更好的解决方案。