Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
F#带<&引用;字符串“;,str>;_F# - Fatal编程技术网

F#带<&引用;字符串“;,str>;

F#带<&引用;字符串“;,str>;,f#,F#,它显示了如何使用SqlCommandProvider类型。示例代码包含以下内容: use cmd = new SqlCommandProvider<" SELECT TOP(@topN) FirstName, LastName, SalesYTD FROM Sales.vSalesPerson WHERE CountryRegionName = @regionName AND SalesYTD > @salesMoreThan ORDER BY S

它显示了如何使用
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)
use cmd=new-SqlCommandProvider(connectionString)
类型构造函数名称前面的
是什么意思?为什么
第一个参数必须是字符串文字?它看起来像一个泛型,但它采用的是变量而不是类型。构造函数似乎已经在
部分中接收了连接字符串。

尖括号是类型的配置。 在您的示例中,您正在定义一个类型并在同一类型上创建一个实例。当台阶分开时更清晰

定义一个类型

type SalesPersonQuery = SqlCommandProvider<query, connectionString>
现在您可以使用
命令.Execute()
而不是
salersonquery.Execute()

之所以有构造函数,是因为稍后(在运行时)可以将连接字符串更改为与定义中提供的不同的字符串,例如:

let command = new SalesPersonQuery(differentConnectionString)
您可以在配置部分中找到:

可以在运行时通过构造函数可选参数重写连接字符串

第一个参数可以是SQL脚本或SQL查询的路径。我想这就是它是字符串的原因:否则您希望如何定义SQL查询

同样,从文档中:

命令文本(sql脚本)可以是文本,也可以是*.sql文件的路径


有没有办法用变量查询生成类型?我想把查询作为一个参数,我不这么认为。或者至少我在文档中没有看到这样的选项。我想您可能会尝试使用一个可变变量来操作它(我没有尝试过,所以您必须测试它是否可能)。但是,您失去了拥有不可变值的优势,比如在多线程环境中不需要锁定。
let command = new SalesPersonQuery(differentConnectionString)