加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

sql-server-2008 – 在EF4中控制ArithAbort

发布时间:2021-04-05 00:05:44 所属栏目:编程 来源:网络整理
导读:我们的EF4 MVC办理方案存在一些机能题目.我们已经可以或许在全部与数据库的毗连之前将其跟踪到ArithAbort配置为封锁,此刻我们正试图逼迫它保持为“ON”. 我们看过: How do you control the “SET” statements emitted by Linq to SQL 但好像EF4正在重置每个查询

我们的EF4 MVC办理方案存在一些机能题目.我们已经可以或许在全部与数据库的毗连之前将其跟踪到ArithAbort配置为封锁,此刻我们正试图逼迫它保持为“ON”.

我们看过:
How do you control the “SET” statements emitted by Linq to SQL

但好像EF4正在重置每个查询之前的毗连,以是这将无法正常事变.

到今朝为止,我们已经实行在给定查询之前“配置ArithAbort”,没有命运.我们也实行了很长的路要走并在我们配置的处所成立新的毗连,但如故没有命运.

那么,任何人都有一个线索,我们如安在对数据库举办任何linq查询之前配置它?

无法变动数据库配置.

编辑:
Per Andiihs提议我实行了包装器办理方案并在以下代码行中添加到EFCachingCommand类

protected override DbDataReader ExecuteDbDataReader(CommandBehavior behavior)
    {
        if (this.WrappedCommand.CommandType == System.Data.CommandType.Text)
        {
            this.WrappedCommand.CommandText = "set arithabort on; " + this.WrappedCommand.CommandText;
        }

这根基上确保任何Linq-sql挪用都以正确的set语句为前缀.

我还必需增补:

DbFunctionCommandTree functionTree = commandTree as DbFunctionCommandTree;
    if (functionTree != null)
    {
        this.IsModification = true;
        return;
    }

到EFCachingCommandDefinition中的GetAffectedEntitySets函数,以使其与存储进程挪用一路正常事变.

办理要领

EF提供了在实体毗连和SQL.Data.Client之间插入环抱提供措施的成果 – 请参阅 http://code.msdn.microsoft.com/EFProviderWrappers和 http://blogs.msdn.com/b/jkowalski/archive/2009/06/11/tracing-and-caching-in-entity-framework-available-on-msdn-code-gallery.aspx

此刻我认可这更像是一个线索而不是谜底 – 但大概你可以在这一点上插入相干的荟萃?

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读