我想在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()
});
答案 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.Query
或db.SqlList
,但是您的SQL都不能使用。