首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >F# - FSharp.Data.SqlClient -如何为更新指定超时

F# - FSharp.Data.SqlClient -如何为更新指定超时
EN

Stack Overflow用户
提问于 2019-01-09 02:00:59
回答 1查看 348关注 0票数 2

我使用FSharp.Data.SqlClient类型提供程序访问server数据库。因此,我在F#中设置了以下类型:

代码语言:javascript
复制
type ClmDB = SqlProgrammabilityProvider<ClmSqlProviderName, ConfigFile = AppConfigFile>
type ResultDataTable = ClmDB.dbo.Tables.ResultData
type ResultDataTableRow = ResultDataTable.Row

然后我用它来做类似的事情:

代码语言:javascript
复制
let saveResultData (r : ResultData) (conn : SqlConnection) =
    let t = new ResultDataTable()
    let newRow = r.addRow t
    t.Update(conn) |> ignore
    newRow.resultDataId

其中ResultData是某种类型,它“知道”如何将自己转换为一行ResultDataTable (ResultDataTableRow)。扩展r.addRow t可以做到这一点。

一切都很棒,除了我插入的行可能相当大(25到30 MB的大小),因此,我有一种不好的感觉,t.Update(conn)可能会随机超时,特别是由于几乎100%的处理器负载(计算系统内核被设计用于消耗所有的处理资源,尽管优先级很低)。悬停在t.Update上并不显示任何指定超时的方法,连接级别上的任何超时都与连接相关,而不是与插入事务☹相关。

因此,问题是如何为Update事务指定超时。

非常感谢!

20190116 update --到目前为止,在我的机器上插入95 my数据行时,上面的t.Update(conn)还没有超时,而这些数据行比运行在那里的其他东西的正常负载低100%。我尚未衡量这类交易的实际时间。如果我这么做了,我会更新这个。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-01-10 21:36:44

您不能为提供的Update方法指定超时,因为当前的Type实现没有提供这种功能。

但是,正如文献资料所指出的,您可能没有多少选择来自定义默认行为。

此外,由于用例类似于将单个行插入到表中,因此我希望借助SqlCommandProvider使用构造器的commandTimeOut可选参数来设置所需的超时值timespan,如下所示:

代码语言:javascript
复制
type AddRow = SqlCommandProvider<"path to the parameterized INSERT statement", designTimeConnection> 
..............................
(new AddRow(runTimeConnection, commandTimeOut=timespan)).Execute(...arg=value...) |> ignore
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54102323

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档