关于这个主题的许多问题似乎都不符合我的情况。我有一个大数据模型。在某些情况下,只需要在 UI 上显示几个字段,因此对于那些我替换了 LINQ to Entity 查询,该查询使用 Entity SQL 查询提取所有内容,只检索所需的列,使用 Type 构造函数,以便我得到返回的实体而不是 DbDataRecord,如下所示:
SELECT VALUE MyModelNameSpace.INCIDENT(incident.FieldA, incident.FieldB, ...) FROM ... AS ...
这有效并在 UI 中显示字段。如果我进行更改,当我退出 UI 元素时,更改会返回到实体模型。但是当我执行 SaveChanges 时,更改不会持久保存到数据库中。日志中没有显示错误。现在,如果我非常小心地将上述查询替换为检索整个实体的 Entity Sql 查询,如下所示:
SELECT VALUE incident FROM MyDB.INCIDENTs AS incident...
更改确实会保存在数据库中!因此,作为测试,我创建了另一个查询,如第一个查询,命名实体中的每一列,它应该与第二个实体 SQL 查询完全等效。然而,它也没有持久化对数据库的更改。
我尝试将返回结果上的 MergeOption 设置为 PreserveChanges,以开始跟踪,如下所示:
incidents.MergeOption = MergeOption.PreserveChanges;
但这没有任何效果。但实际上,如果使用 Entity Sql 检索整个实体会持续更改,那么在检索字段子集时表现不同的逻辑目的是什么?我想知道这是否是一个错误?