如何控制 Linq to SQL 发出的“SET”语句

Posted

技术标签:

【中文标题】如何控制 Linq to SQL 发出的“SET”语句【英文标题】:How do you control the "SET" statements emitted by Linq to SQL 【发布时间】:2009-04-21 18:27:10 【问题描述】:

有什么方法可以控制 Linq to SQL 发出的“SET”语句?我在 SQL 分析器中看到这些 SET 选项来自 Linq 到 SQL,结果表明“set arithabort off”导致我们的一个 procs 需要 45 秒而不是

-- network protocol: TCP/IP
set quoted_identifier on
set arithabort off
set numeric_roundabort off
set ansi_warnings on
set ansi_padding on
set ansi_nulls on
set concat_null_yields_null on
set cursor_close_on_commit off
set implicit_transactions off
set language us_english
set dateformat mdy
set datefirst 7
set transaction isolation level read committed

谢谢, 乔恩

【问题讨论】:

【参考方案1】:

与其使用默认构造函数或传递连接字符串,不如创建自己的IDbConnection,设置所需的任何选项,然后将其传递给DataContext 的构造函数。

【讨论】:

我没有在 SqlConnection 对象中看到将 arithabort 设置为 ON 的选项。有什么想法吗? 您应该能够将这些选项中的任何一个作为 SqlCommand.ExecuteNonQuery() 执行 没问题!如果这回答了您的问题,请不要忘记将其标记为答案! :) EF4有什么办法可以做到这一点,我一直在寻找方法,但还没有多少运气。 @Grubsnik:因为这个问题是关于 L2S 而你的问题是关于 EF4,所以请将它作为一个新问题发布;这样你也会得到更多的关注!

以上是关于如何控制 Linq to SQL 发出的“SET”语句的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 LINQ to SQL 连接到 SQL Server?

linq to sql if control

Linq like predicate to sql string

Linq To Sql 增改删

LINQ to SQL语句(13)之开放式并发控制和事务

linq to sql startwith 性能索引列