我想检索满足条件的所有行。但是当我尝试时,只有行计数在调试时正确显示,并且第一行值重复获取。以下是我的代码
var data = (from jlist in entity.JobDetails
where jlist.JobID == QJobID
select jlist).ToList();
只有第一行值显示在var数据中。我有多个项目要显示
答案 0 :(得分:2)
重复相同的对象几乎总是主键不准确的说明:EF知道的PK不能唯一地标识数据库中的实际记录。当视图映射到EF模型时经常会发生这种情况,因为视图只是一个存储的查询,可能甚至不会打扰唯一标识。
在您的情况下,您将单个主键更改为复合键,而不知道EF,或者您只告诉EF JobID
是主键。
当EF实体化实体对象时,它为其创建一个EntityKey
,其中包含对实体的引用。这些EntityKey
具有唯一的,否则更改跟踪器会崩溃。因此,如果有两个实体(由{ 1, 1 }
和{ 1, 2 }
标识,而EF仅查看1
,则EF将使用现有实体密钥用于第二个实体。我认为,奇怪的部分是EF仍然决定实现与该实体密钥匹配的第二个实例。如果不是,你只能看到一条JobDetails
记录,这可能会更好地将你的怀疑指向正确的位置。