为什么此Entity Framework LINQ查询失败?

时间:2015-07-29 15:39:34

标签: c# linq entity-framework

我有一个简单的EF Linq查询。现在它每次都返回null,我无法找到原因。

public Sample GetDataSample(Equipment equip)
{
    Sample sample = null;
    try
    {
        sample = this.Samples.FirstOrDefault(s => s.EquipmentId == equip.Id);
    }
    catch (Exception e)
    {
        // do nothing for now
    }
    return sample;
}

这是在具有有效DbContext实体的有效Equipment内调用的。这是我在调试器中看到的。我已验证活动上下文中的DbSet Samples是否包含应匹配的数据。请告诉我,我错过了一些明显的东西。

enter image description here enter image description here

编辑:我做了一个LINQ配置文件,看看SQL生成的是什么,它看起来很好:

SELECT TOP (1) 
[Extent1].[Id] AS [Id], 
[Extent1].[EquipmentId] AS [EquipmentId], 
[Extent1].[SampleTime] AS [SampleTime]
FROM [Pbhs].[Samples] AS [Extent1]
WHERE [Extent1].[EquipmentId] = 1

现在,我想知道EF查找是在检查本地代理还是在查找数据库。数据存在于当前上下文中,但尚未提交到数据库。

1 个答案:

答案 0 :(得分:1)

这里有两件事:

 s.EquipmentId == equip.Id

设备ID如何," EquipmentId"与主键ID相同?你确定你没有比较" apples"到"橘子"?

  

数据存在于当前上下文中,但尚未提交到数据库。

然后在Id上搜索将失败,因为新项目尚未提交到数据库并已分配Id