0
嗨,SQL命令可以工作,但EntityFramework的命令却不行?
如果我运行在我的数据库:
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行,但与实体框架
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
的参数如下:
LocationLevelOrder0 = 2/3/5/%
searchS = %
CurrentTime = {2012-02-04 17:31:34}
fetchAdsTo = {2011-11-04 17:31:34}
categoryLevelOrder = 7/15/33/36/_%
为什么我没有获得与实体框架的任何结果,而我在SQL经理吗?选择价值是什么意思?如果我删除它会引发异常?
谢谢,你是对的,如果我运行7/15/33/36/_%,我不会再有任何命中。我尝试加工的字符串是“7/15/33/36/X”,其中X我可以是任何字符串,maby“7/15/33/36/69/78/99”或“7/15/33/36/100 /158分之152“ 。在SQL中做一个特殊的含义?否则它应该只是删除_? – Banshee 2012-02-04 17:03:41
是的,在SQL中'_'是'LIKE'运算符中只有一个字符的通配符。 – danihp 2012-02-04 17:07:34
好吧,所以这个7/15/33/36/_%我说匹配7/15/33/36/+至少有一个通配符,但是还要赋予字符串更多的通配符?我会尽力排除这个_并且看看它是否能起作用。感谢您的帮助! – Banshee 2012-02-04 18:36:25