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

Posted

技术标签:

【中文标题】如何将带有 EntityState 和值的查询从 Entity Framework 5 转换为 6?【英文标题】:How to translate a query with an EntityState and a value from Entity Framework 5 to 6? 【发布时间】:2020-08-13 15:52:36 【问题描述】:

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

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

【问题讨论】:

【参考方案1】:

这是我目前的解决方案:

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

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

【讨论】:

以上是关于如何将带有 EntityState 和值的查询从 Entity Framework 5 转换为 6?的主要内容,如果未能解决你的问题,请参考以下文章

MsSQL如何在一次查询中从给定的日期和仓库号获取最近的未来值和值的总和

在 python 中使用 panda 库和 Dash Plotly 创建带有标签和值的下拉菜单

如何使用分隔列和值的数组生成查询

选择带有名称[] 和值的复选框(jquery/javascript)

如何使用变量创建具有索引和值的 Javascript 对象?

Groovy 比较两个带有未知节点名称和值的 json