Dapper 查询语法的问题
Issues with Dapper query syntax
这里对我使用 dapper 进行查询的帮助很少,在我的查询中收到错误消息 =“ORA-00936:缺少 expression\n”。我想知道我在这里错过了什么?
public class LocationDto
{
public int LocationId { get; set; }
public int RouteId { get; set; }
public string StartTime { get; set; }
public string Location { get; set; }
}
// Query Below
using (OracleConnection connection = new OracleConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString))
{
try {
var x = connection.QueryAsync<LocationDto>("Select ROUTE_ID as RouteId, SCHEDULE_STOP as Location, START_TIME as StartTime From SCHEDULE WHERE ROUTE_ID = @Id", new { input.RouteId }).Result.ToList();
}
catch (Exception ex)
{
}
}
首先,对于 Oracle 查询,您需要使用 :
而不是 @
来表示参数占位符。
然后是这段代码:
new { input.RouteId }
将生成一个名为 RouteId
的 属性 对象。
此 RouteId
与您查询中的参数名称不匹配,即 Id
。它们需要匹配,否则数据库无法将参数绑定到正确的输入值。
你可以
更改 Sql 查询:
WHERE ROUTE_ID = :RouteId
或
更改 C#:
new { Id = input.RouteId }
并在 SQL.
中使用 :Id
哪个并不重要,重要的是名字匹配。
这里对我使用 dapper 进行查询的帮助很少,在我的查询中收到错误消息 =“ORA-00936:缺少 expression\n”。我想知道我在这里错过了什么?
public class LocationDto
{
public int LocationId { get; set; }
public int RouteId { get; set; }
public string StartTime { get; set; }
public string Location { get; set; }
}
// Query Below
using (OracleConnection connection = new OracleConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString))
{
try {
var x = connection.QueryAsync<LocationDto>("Select ROUTE_ID as RouteId, SCHEDULE_STOP as Location, START_TIME as StartTime From SCHEDULE WHERE ROUTE_ID = @Id", new { input.RouteId }).Result.ToList();
}
catch (Exception ex)
{
}
}
首先,对于 Oracle 查询,您需要使用 :
而不是 @
来表示参数占位符。
然后是这段代码:
new { input.RouteId }
将生成一个名为 RouteId
的 属性 对象。
此 RouteId
与您查询中的参数名称不匹配,即 Id
。它们需要匹配,否则数据库无法将参数绑定到正确的输入值。
你可以
更改 Sql 查询:
WHERE ROUTE_ID = :RouteId
或
更改 C#:
new { Id = input.RouteId }
并在 SQL.
中使用:Id
哪个并不重要,重要的是名字匹配。