In this article它显示了如何使用SqlCommandProvider
类型。示例代码包含:
use cmd = new SqlCommandProvider<"
SELECT TOP(@topN) FirstName, LastName, SalesYTD
FROM Sales.vSalesPerson
WHERE CountryRegionName = @regionName AND SalesYTD > @salesMoreThan
ORDER BY SalesYTD
" , connectionString>(connectionString)
类型构造函数名称前面的<... ,...>
是什么意思,为什么呢?
第一个参数必须是字符串文字?它看起来像一个通用但它采取的变量不是类型。构造函数似乎正在接收<>
部分中的连接字符串。
答案 0 :(得分:3)
尖括号是类型的配置。 在您的示例中,您正在定义类型并以相同类型创建实例。当步骤分开时,它会更清楚。
定义类型。
type SalesPersonQuery = SqlCommandProvider<query, connectionString>
但实际上要创建一个类型的实例:
let command = new SalesPersonQuery()
现在您可以使用command.Execute()
而不是SalesPersonQuery.Execute()
。
有一个构造函数的原因是因为稍后(在运行时)您可以将连接字符串更改为与定义中提供的连接字符串不同,例如:
let command = new SalesPersonQuery(differentConnectionString)
您可以在配置部分the documentation中找到:
可以在运行时通过构造函数可选参数
覆盖连接字符串
第一个参数可以是SQL脚本或SQL查询的路径。我想这就是它是一个字符串的原因:你想如何定义一个SQL查询?
再次,从文档:
命令文本(sql脚本)可以是文字或* .sql文件的路径