如何在Commandtext中将参数指定为集合

时间:2016-02-01 09:35:10

标签: f# fsharp.sqlclient

我正在使用SqlCommandProvider,我需要为id集合中的每个id获取一些数据

let ids=["B058A99-C4B2-4CC3-BA9F-034B1F1ECCBD";"A09C01C-D51B-41C1-B44C-0995DD285088"]
[<Literal>]
let qLogo ="""SELECT Id,LogoUrl FROM Hotels WHERE Id IN (@IDS)"""
let queryLogo = new SqlCommandProvider<qLogo,constring>()
queryLogo .Execute(ids)//i need to be able to pass a collection here

`

1 个答案:

答案 0 :(得分:2)

长话短说,SqlCommandProvider甚至不是正确的类型提供程序(假设您不考虑字符串连接来构建查询)。原因是SQL Server仅通过调用存储过程并传递表值参数来接受数组参数。

因此,要调用存储过程,您需要SqlProgrammabilityProvider来实现此目的。但是您必须预先创建表类型和存储过程,如类型provider documentation中所述(向下滚动到“表值参数(TVP)”部分)。

相关讨论:How to use SQL IN statement in fsharp.data.sqlclient?