2010-09-18 2 views
0

У меня есть очень простой LINQ To Entities запроса следующим образом:Проблемы с простым LINQ To Entities Query

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 Server? По умолчанию Linq будет отложить выполнение запроса как можно дольше. Это означает, что он выполнит запрос только при вызове GetEnumerator или аналогичной операции над запросом. Однако в вашем примере вызов .SingleOrDefault() должен выполнить запрос.

Проверьте следующее:

  1. Результат запроса. Какова стоимость заказов?
  2. Если вы выполните это в Visual Studio, наведите указатель мыши на db.Orders и проверьте его значение.
  3. Вы подключаетесь к базе данных?