使用实体框架从数据库中检索值

Posted

技术标签:

【中文标题】使用实体框架从数据库中检索值【英文标题】:Retrieve Values from database using Entityframework 【发布时间】:2017-03-03 21:08:59 【问题描述】:

我想检索所有满足条件的行。但是,当我尝试仅在调试时正确显示行数并且第一行值重复获取时。以下是我的代码

var data = (from jlist in entity.JobDetails
            where jlist.JobID == QJobID
            select jlist).ToList();

只有第一行值显示在 var 数据中。我有超过 1 个项目要显示

【问题讨论】:

@GiladGreen 如何添加图片 你调试的怎么样了? Linq 查询很难调试,因为它们经常使用延迟执行,并且可以包装更大的集合。 我已经添加了输出和调试的图片。 这表示JobDetails的主键定义不正确。 @GertArnold 更新实体模型代码后工作正常 【参考方案1】:

重复的相同对象几乎总是表明主键不准确:EF 知道的 PK 不能唯一标识数据库中的实际记录。当视图映射到 EF 模型时,这种情况经常发生,因为视图只是一个存储的查询,甚至可能不关心唯一标识。

在您的情况下,您在 EF 不知道的情况下将单个主键更改为复合键,或者您只告诉 EF JobID 是主键。

当 EF 实现一个实体对象时,它会为它创建一个 EntityKey 来引用该实体。这些EntityKey 必须是唯一的,否则更改跟踪器会崩溃。因此,当有两个实体,由 1, 1 1, 2 标识时,EF 只查看1,EF 将为第二个实体使用现有的实体键。我认为奇怪的部分是 EF 仍然决定实现与该实体键匹配的第二个实例。如果不是这样,您只会看到一条 JobDetails 记录,这可能会更好地将您的怀疑指向正确的位置。

【讨论】:

很好的解释 +1 :)

以上是关于使用实体框架从数据库中检索值的主要内容,如果未能解决你的问题,请参考以下文章

如何使用实体框架检索插入实体的 ID? [关闭]

无法从实体框架的引用表中检索数据

分页和实体框架

从没有一个字段的实体框架中检索对象

需要一种方法来使用实体框架核心中的C#Linq从第二个表中检索数据

使用实体框架时是不是可以从查询中返回字符串值?