如何使用存储过程使用Entity Framework避免TimeOut异常?

时间:2017-03-28 23:18:30

标签: c# sql entity-framework stored-procedures

我使用Entity Framework来调用一个需要2分钟才能执行的存储过程。结果,我收到超时异常。

有没有办法在没有超时异常的情况下使用我的存储过程?

2 个答案:

答案 0 :(得分:3)

实体框架使用底层连接提供程序,并取决于提供程序提供的超时。如果我没有弄错的话,通常是超时的30秒。

但是,您可以通过以秒为单位设置context.CommandTimeout = 120的值

来增加超时

希望这有帮助。

答案 1 :(得分:0)

您也可以使用连接字符串控制超时值。

<connectionStrings>

<add name="AdventureWorksEntities"
connectionString="metadata=.\AdventureWorks.csdl|.\AdventureWorks.ssdl|.\AdventureWorks.msl;
provider=System.Data.SqlClient;provider connection string='Data Source=localhost;
Initial Catalog=AdventureWorks;Integrated Security=True;Connection Timeout=60;
multipleactiveresultsets=true'" providerName="System.Data.EntityClient" />

</connectionStrings>

您也可以为DBContext设置它。

public class MyDatabase : DbContext
{
    public MyDatabase ()
        : base(ContextHelper.CreateConnection("Connection string"), true)
    {
        ((IObjectContextAdapter)this).ObjectContext.CommandTimeout = 180;
    }
}