如何控制 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”语句的主要内容,如果未能解决你的问题,请参考以下文章