簡體   English   中英

第二個存儲過程中的asp.net實體框架存儲過程錯誤

[英]asp.net entity framework stored procedure error on second stored procedure

在ASP.NET MVC中,我具有以下控制器:

using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using test.DB;
using test.EFView;

namespace test.Controllers
{
    public class OrderAndDDTController : Controller
    {

        // GET: OrderAndDDT
        public ActionResult Index(DateTime? Start, DateTime? End)
        {
            if (Start != null && End != null)
            {
                using (var db = new PROVA_ETLEntities())
                {
                    ViewBag.Start = Start;
                    ViewBag.End = End;
                    var list = db.ddsp_getFamQty_FI(Start, End).OrderBy(x => x.Famiglia).ToList();
                    return View(list);
                }
            }

            return View();
        }

        public ActionResult Customer(DateTime? Start, DateTime? End, string Famiglia)
        {
            if (Start != null && End != null)
            {
                using (var db = new PROVA_ETLEntities())
                {
                    ViewBag.Start = Start;
                    ViewBag.End = End;
                    ViewBag.Famiglia = Famiglia;
                    var list = db.ddsp_getFamCustQty_FI(Start, End, Famiglia).OrderBy(x => x.Cliente).ToList();
                    return View(list);
                }
            }

            return View();
        }
    }
}

在索引視圖中,我有一個運行第二個操作actionresult “客戶”的按鈕。 當我嘗試運行它時,它會超時。 我嘗試使用上面的代碼將通過的參數來執行相同的存儲過程,並且只需不到一秒鍾的時間即可執行。 似乎第一個SQL語句保持打開狀態,並且不允許發送第二個(我在SQL Activity Monitor中看到了)。

錯誤的地方是自動生成的代碼(由Entity Framework提供),這是

public virtual ObjectResult<ddsp_getFamCustQty_Result> ddsp_getFamCustQty_FI(Nullable<System.DateTime> dateStart, Nullable<System.DateTime> dateEnd, string family)
{
    var dateStartParameter = dateStart.HasValue ?
        new ObjectParameter("dateStart", dateStart) :
        new ObjectParameter("dateStart", typeof(System.DateTime));

    var dateEndParameter = dateEnd.HasValue ?
        new ObjectParameter("dateEnd", dateEnd) :
        new ObjectParameter("dateEnd", typeof(System.DateTime));

    var familyParameter = family != null ?
        new ObjectParameter("family", family) :
        new ObjectParameter("family", typeof(string));

    return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction<ddsp_getFamCustQty_Result>("ddsp_getFamCustQty_FI", dateStartParameter, dateEndParameter, familyParameter);
} 

在最后一行,但SQL超時異常。

您可以設置命令超時,如下所示

   ((IObjectContextAdapter)this).ObjectContext.CommandTimeout = 180;//in seconds

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM