2010-09-18 23 views
0

我有一个非常简单的LINQ到实体查询,如下所示:问题有一个简单的LINQ到实体查询

var orderID = 1; 
    var orders = (from o in db.Orders 
       where o.OrderID == orderID 
       select o).SingleOrDefault(); 

谁能告诉我,为什么这个查询是行不通的?它甚至不会抛出异常。我也检查过SQL分析器,上面的查询甚至不会触发相应的SQL查询。但是当我直接插入orderID的值到查询其中o.OrderID == 1然后一切正常。

回答

0

首先,一个更简单的查询是

var specifiedOrders = db.Orders.SingleOrDefault(o => o.OrderID == orderID); 

其次,你确定你的查询没有在SQL射击?默认情况下,Linq会尽可能延迟查询执行。这意味着它只会在您调用GetEnumerator或查询中的类似操作时执行查询。然而在你的例子中,.SingleOrDefault()调用应该执行查询。

检查以下内容:

  1. 查询的结果。订单的价值是什么?
  2. 如果您在Visual Studio中执行此操作,请将鼠标悬停在db.Orders上并检查其值。
  3. 您是否连接到正确的数据库?