如何减少MVC

时间:2017-05-26 08:12:41

标签: c# sql-server asp.net-mvc entity-framework query-performance

我的第一次数据库调用有时会花费太长时间来呈现视图/页面。它需要大约10-12秒,然后第二次快速像500毫秒然后200毫秒。下面是我在项目中运行的几个代码示例。我正在使用存储过程。我的项目结构是默认的mvc结构。

我已在Databse中检查过Running StoredProcedure。它平均需要200-300毫秒,然后为什么完整页面需要大约12秒加载。这是我的托管问题或如何诊断此问题。

using (WebMatrix.Data.Database db1 = WebMatrix.Data.Database.Open("SQLTestDB"))
{
var PromoDetails = db1.Query("exec GetListingPromosV2 @0", id).ToList();
List<VMListingPromos> Lst = new List<VMListingPromos>();

foreach (var item in PromoDetails)
{
    VMListingPromos Listing_Promo = new VMListingPromos();
    Listing_Promo.PromoTitle = item.PromoName;
    Listing_Promo.Amount = item.Value;
    Listing_Promo.ExpirationDate = (item.ExpirationDate == null ? "NoDate" :     item.ExpirationDate.ToString("MM/dd/yyyy"));
    Listing_Promo.StartDate = (item.StartDate == null ? "NoDate" : item.StartDate.ToString("MM/dd/yyyy"));
    Listing_Promo.ListingPromoID = item.ID;
    Listing_Promo.status = item.status;
    Lst.Add(Listing_Promo);
}
return Lst;
}

1 个答案:

答案 0 :(得分:0)

听起来您在第一个请求上可能没有打开的数据库连接池。您可以尝试通过连接字符串设置最小数量的连接池,这样您的应用将始终保持打开的连接。

web.config中的示例连接字符串: <add name="WriteConnection" connectionString="Data Source=my-server-name;Database=my_database;User ID=user;Password=password;Application Name=app_name;Min Pool Size=1" providerName="System.Data.SqlClient" />

参考:https://docs.microsoft.com/en-us/previous-versions/dotnet/netframework-1.1/8xx3tyca(v=vs.71)