参数的OrmLite传递元组

时间:2019-03-18 12:16:51

标签: c# sql-server tuples ormlite-servicestack

我想在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 个答案:

答案 0 :(得分:1)

您要执行的SQL无效,RDBMS没有Tuple参数的概念,而且我不知道您要执行的SQL功能是从您的示例试图从SQL的解构元组中选择的

从有效的SQL开始,您可以对数据库运行它,然后可以在OrmLite中使用它,但是您需要将元组拆分为单独的db参数,例如:

df.V1.map(pd.Timestamp.fromordinal)
Out[511]: 
0   2019-10-14
1   2019-10-14
2   2019-10-14
3   2019-10-14
4   2018-12-31
5   2019-10-14
Name: V1, dtype: datetime64[ns]

new { item1 = Tuple.Item1, item2 = Tuple.Item2 } 也使用OrmLite中的Dapper嵌入式版本,OrmLite中的等效API是db.Querydb.SqlList,但是您的SQL都不能使用。