数据库加载时抛出异常

时间:2014-07-02 11:50:14

标签: asp.net-mvc entity-framework asp.net-mvc-3 sql-server-2008 nopcommerce

我正在开发电子商务系统(NopCommerce)。我使用的技术是Asp.Net Mvc3sql server 2008放置订单时抛出异常(不是每次都有,但是当数据库加载时)< / p>

将产品添加到订单后,我使用以下功能更新库存

_productService.AdjustInventory(sc.ProductVariant, true, sc.Quantity, sc.AttributesXml);

Error while placing order. Error 0: Error: An error occurred while updating the entries. See the inner exception for details.. Full exception: System.Data.Entity.Infrastructure.DbUpdateException: An error occurred while updating the entries. See the inner exception for details. ---> System.Data.UpdateException: An error occurred while updating the entries. See the inner exception for details. ---> System.Data.SqlClient.SqlException: Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding.

可能存在许多客户在线或我正在更新ProductVariant的情况,这是一个漫长的过程(需要10-12分钟)。那时只会抛出这个异常。

避免此异常的任何解决方案。

1 个答案:

答案 0 :(得分:1)

尼丁,

问题是超时,因为默认情况下,SQL“语句”的超时设置为30秒。如果SQL Server完成任务需要30秒以上,您将收到超时。您可能想要自己设置超时。 timeout属性称为CommandTimeout,它是SqlCommand对象的属性。

using (SqlCommand myCommand = new SqlCommand())
{
   // Set the new command timeout to 60 seconds
   // in stead of the default 30
   myCommand.CommandTimeout = 60;
}

此问题的三个原因可能是

  1. 某处出现僵局

  2. 数据库的统计信息和/或查询计划缓存不正确

    3.查询过于复杂,需要调整

  3. 请参阅此处的答案Check Out This

    希望它有所帮助........