如何将带有EntityState和值的查询转换为Entity Framework 5到6?

问题描述 投票:0回答:1

我正在将系统从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。

我无法找到如何将它们结合的方法,因为完成完整的迁移需要它们。有什么主意吗?

c# entity-framework linq entity-framework-6 entity-framework-5
1个回答
0
投票

这是我当前的解决方案:

//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);

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

© www.soinside.com 2019 - 2024. All rights reserved.