Anele Ngqandu Ответов: 1

Проблемы с синтаксисом запросов dapper


Всем Привет

небольшая помощь здесь с моим запросом с помощью dapper, получал сообщение об ошибке = "ORA-00936: отсутствует выражение\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)  
                    {   
                      
                    }  
    }

1 Ответов

Рейтинг:
0

Richard Deeming

IIRC, Щеголеватый[^] соответствует параметрам запроса на основе имени свойства анонимного объекта.

Ваш параметр запроса называется Id, но ваша собственность называется RouteId.

Вы можете либо изменить имя параметра, либо изменить имя свойства.

var x = connection.QueryAsync<LocationDto>("Select ROUTE_ID as RouteId,  SCHEDULE_STOP as Location, START_TIME as StartTime From SCHEDULE WHERE ROUTE_ID = @RouteId", new { input.RouteId }).Result.ToList();

// Or:
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 { Id = input.RouteId }).Result.ToList();


Anele Ngqandu

Привет, Ричард, к сожалению, я попробовал их оба, но ничего. Может быть, это потому, что это запрос оракула?

Richard Deeming

Возможно - Вам может понадобиться использовать : вместо @ для параметра в запросе.

var x = connection.QueryAsync<LocationDto>("Select ROUTE_ID as RouteId,  SCHEDULE_STOP as Location, START_TIME as StartTime From SCHEDULE WHERE ROUTE_ID = :RouteId", new { input.RouteId }).Result.ToList();

Anele Ngqandu

Что Ричарду было 100 лет!!Спасибо