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。它们需要匹配,否则数据库无法将参数绑定到正确的输入值。

你可以

  1. 更改 Sql 查询:

    WHERE ROUTE_ID = :RouteId
    

  1. 更改 C#:

    new { Id = input.RouteId }
    

并在 SQL.

中使用 :Id

哪个并不重要,重要的是名字匹配。