OrmLite передать кортеж параметра - PullRequest
1 голос
/ 18 марта 2019

Я хочу передать список объектов с двумя свойствами в качестве параметра в запросе ServiceStack OrmLite, но выполняется ошибка "Член типа Mgh.Application.Queries.GetDataStepThreeQuery + Configuration не может использоваться как значение параметра "

Класс параметров:

public class Configuration
    {
        public int RoomTypeId { get; set; }
        public int Adults { get; set; }
    }

Запрос:

select * from (values @Configurations) as V(InternalNameRoomId, MaximumPersons)
where r.InternalNameRoomId = V.InternalNameRoomId and
      r.MaximumPersons = V.MaximumPersons

Передать параметр:

var rooms = _db.Query<Room>(sqlRooms, new
    {
       request.From,
       request.To,
       request.EstablishmentId,
       Configurations = request.SelectedConfigurations.ToArray()
    });

1 Ответ

1 голос
/ 18 марта 2019

SQL, который вы пытаетесь выполнить, недопустим, RDBMS не имеют понятия о параметрах Tuple, и я не знаю, какую функцию SQL вы пытаетесь выполнить, которая выбирает из деконструированного Tuple в SQL, который пытается выполнить ваш пример делаем.

Начните с действительного SQL, который, как вы знаете, работает, запустив его для своей базы данных, затем вы можете использовать его в OrmLite, но вам нужно будет разделить ваш кортеж на отдельные параметры БД, например:

new { item1 = Tuple.Item1, item2 = Tuple.Item2 }

Также db.Query использует встроенную версию Dapper в OrmLite, эквивалентный API в OrmLite - db.SqlList или db.Select, но ваш SQL не будет работать ни в одном.

...