Команда SQL работает, но та же команда с EntityFramework нет? - PullRequest
0 голосов
/ 04 февраля 2012

Привет

Если я запускаю в своей базе данных:

SELECT *
FROM 
    Ads AS a 
INNER JOIN AdCategories AS ac 
    on (ac.Id = a.CategoryId) 
INNER JOIN Location AS l 
    on (l.Id = a.UserLocationId) 
WHERE 
    (l.LevelOrder LIKE '2/3/5/%') AND 
    (a.Title LIKE '%' OR a.Description LIKE '%') AND 
    a.InactivatedDate IS NULL AND 
    a.PublishedDate IS NOT NULL AND 
    a.EndDate >= '2012-02-04 17:01:37' AND 
    a.EndDate >= '2011-11-04 16:55:26' AND 
    ac.LevelOrder Like '7/15/33/36_%'

Это вернет 2 строки, но при запуске той же команды с Entity Framework

context.CreateQuery<Ad>(sqlCommand, parameters.ToArray()); 
output = ads.ToList(); 

Я ничего не понимаю?

Вот так выглядит оператор SQL:

SELECT VALUE a 
FROM 
    Ads AS a 
INNER JOIN AdCategories AS ac 
    on (ac.Id = a.CategoryId) 
INNER JOIN Location AS l 
    on (l.Id = a.UserLocationId) 
WHERE 
    (l.LevelOrder LIKE @locationLevelOrder0) AND 
    (a.Title LIKE @searchS OR a.Description LIKE @searchS) AND 
    a.InactivatedDate IS NULL AND 
    a.PublishedDate IS NOT NULL AND 
    a.EndDate >= @CurrentTime AND 
    a.EndDate >= @fetchAdsTo AND 
    ac.LevelOrder Like @categoryLevelOrder

Параметры выглядят так:

  1. LocationLevelOrder0 = 2/3/5/%
  2. searchS = %
  3. CurrentTime = {2012-02-04 17:31:34}
  4. fetchAdsTo = {2011-11-04 17:31:34}
  5. categoryLevelOrder = 7/15/33/36/_%

Почему я не получаю никаких результатов с Entity Framework, пока я работаю в диспетчере SQL? И что означает выделенное значение? Если я уберу его, будет выдано исключение?

1 Ответ

1 голос
/ 04 февраля 2012

В первом запросе вы сравниваете LevelOrder с '7/15/33/36_%', а во втором с 7/15/33/36/_%, что является другой строкой. Это ошибка транскрипции или проблема?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...