我有一个原始的SQL查询,我正试图在SqlParameters中使用它。当我不安全地创建查询(使用字符串连接)时,它工作得很好.我得到了结果。在这种情况下,我得到10。
当我尝试使用SQL参数时,我会得到零记录。我尝试使用和不使用@创建参数,我尝试在对Query的调用中单独添加它们,并且尝试对象参数而不是Sql参数。我甚至尝试过只使用one....and,不管我做了什么,我似乎无法使用SQL参数获得结果,只使用字符串连接。
实体框架SQL查询如何与SQL参数一起工作,以及为什么我使用的查询不能工作?
示例代码:
string query = "WITH OrderedItems AS " +
"(" +
"SELECT *, " +
"ROW_NUMBER() OVER (ORDER BY @p0) AS 'RowNumber' " +
"FROM ITEMS" +
" WHERE item_name LIKE '%@p1%'" +
")" +
"SELECT * FROM OrderedItems" +
" WHERE RowNumber BETWEEN " + (skip + 1) + " AND " + (skip + take);
// I have tried using @p0 and @p1 as the parameter names here
var parameters = new object[] {new SqlParameter("p0", orderBy), new SqlParameter("p1", model.item_name)};
var context = new DbEntities();
// I have tried only using one and passing it too
List<item> result = context.items.SqlQuery(query, parameters).ToList();发布于 2014-08-19 18:55:40
从%中删除引号和'%@p1%'。然后将%添加到要作为参数传递的字符串中。... new SqlParameter("p1", "%" + model.item_name + "%")示例:
select * from mytable where column1 like @p1
filter1 = "%test%";
var parameters = new object[] {new SqlParameter("p1", filter1)}你的代码是:
string query = "WITH OrderedItems AS " +
"(" +
"SELECT *, " +
"ROW_NUMBER() OVER (ORDER BY @p0) AS 'RowNumber' " +
"FROM ITEMS" +
" WHERE item_name LIKE @p1" +
")" +
"SELECT * FROM OrderedItems" +
" WHERE RowNumber BETWEEN " + (skip + 1) + " AND " + (skip + take);
var parameters = new object[] {new SqlParameter("p0", orderBy), new SqlParameter("p1", "%" + model.item_name + "%")};
var context = new DbEntities();
List<item> result = context.items.SqlQuery(query, parameters).ToList();https://stackoverflow.com/questions/25390452
复制相似问题