C# 使用实体框架的Linq查询不会产生任何结果

C# 使用实体框架的Linq查询不会产生任何结果,c#,entity-framework,linq,linq-to-entities,C#,Entity Framework,Linq,Linq To Entities,我正在使用linq和实体框架进行查询。我使用的数据库是Oracle。代码如下: Entities bdd = contextWrapper.GetContext(); data = (from table in bdd.COP_PRDTICSOURES where (table.IDTTIC==ticketId && table.IDTPRD==productId) select table).AsEnumerable(); 当我使用调试器查看

我正在使用linq和实体框架进行查询。我使用的数据库是Oracle。代码如下:

Entities bdd = contextWrapper.GetContext();

data = (from table in bdd.COP_PRDTICSOURES
        where (table.IDTTIC==ticketId && table.IDTPRD==productId)
        select table).AsEnumerable();
当我使用调试器查看变量
bdd.COP\u PRDTIC\u SOURES
时,它包含一个与我的两个条件匹配的条目。但是,在执行查询之后,
data
变量不包含任何结果

我的语法有问题吗

一些补充资料:

  • 执行此查询时,我要查找的实体未提交到数据库中。它以前在同一事务中创建过
  • 我在后面的数据上使用了
    foreach
    ,因此这不是延迟加载的问题

可计算的
不从数据库加载数据。调用它并不是执行实际的查询,只是更改整个查询的执行方式


使用
ToArray
ToList
来显式加载数据。或者在此集合上调用
foreach

这也可能会有所帮助。什么代码访问
数据
,一个
foreach
?Linq使用惰性查询,这意味着数据中的不是数据,而是将获取数据的查询。如果您随后执行了另一个linq查询,它只会将条件添加到查询中,而不会检索数据。在您通过调用Enumerate访问查询内容之前,这不会发生。这是通过foreach、ToArray、ToList、First完成的,etc@MikeT:我通过调试器查看数据,因此它枚举可枚举项,触发查询。我可以看出,当我这样做时,枚举不会产生任何结果。您使用的是什么数据库?是否可能查询区分大小写,而您的条件不区分大小写?当您省略'Where'子句时,结果如何?稍后我会调用集合上的foreach(在同一事务中)。此外,我认为这正是调试器在查看可枚举项时所做的。@Kaidjin当您只是
watch
数据时,调试器不会显示数据,因为它没有加载。你必须加载data@Backs实际上,在Visual Studio中,您可以在调试器窗口中刷新变量的数据,然后它将执行与调用“ToList()”相同的操作。@BjörnBoxstart是的,我知道,我认为这等于执行查询和数据加载。我只是忘记了这个“按钮”的名称@在调试窗口中属性的“值”字段右侧有一个带有两个箭头的图标。;)