我使用Entity Framework来调用一个需要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;
}
}