gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 07:00:36 27 4
gpt4 key购买 nike

我们的 EF4 MVC 解决方案存在一些性能问题。我们已经能够追踪到 ArithAbort 在与数据库的所有连接之前被设置为关闭,现在我们试图强制它保持为“ON”。

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

但似乎 EF4 在每次查询之前都在重置连接,所以这不起作用。

到目前为止,我们已经尝试在给定查询之前“设置 ArithAbort on”,但没有成功。我们还尝试了很长的路要走并在我们设置的地方建立新的连接,但仍然没有运气。

那么,任何人都知道如何在对数据库进行任何 linq 查询之前设置它?

更改数据库设置不是一个选项。

编辑:
根据 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/EFProviderWrappershttp://blogs.msdn.com/b/jkowalski/archive/2009/06/11/tracing-and-caching-in-entity-framework-available-on-msdn-code-gallery.aspx

现在我承认这更像是一个线索而不是答案 - 但也许您可以在此时插入相关集?

关于sql-server-2008 - 在 EF4 中控制 ArithAbort,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6344992/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com