【问题标题】:Entity Framework Timeout on asp.netasp.net 上的实体框架超时
【发布时间】:2015-02-10 20:46:29
【问题描述】:

在总是相同的 SQL 视图上时不时地出现实体框架超时,然后我总是有两个选项来修复网站

我运行这个查询

USE [ibeems]
DBCC FREEPROCCACHE

我改变视图

然后网页会在接下来的几天内立即打开。

这是视图

USE [ibeems]

GO
ALTER VIEW [dbo].[ViewNewVerificationList]
AS
   SELECT        
      dbo.Quotation.ClientId, dbo.Quotation.ActualTurnover,    
      dbo.Quotation.VerificationFee, dbo.Quotation.ConsultationFee, 
      dbo.Quotation.RequestDateTime, dbo.Quotation.ConsultantFirmId, 
      dbo.Quotation.CompanyId,
      dbo.ActionHistory.ActionNameId AS LastActionID,
      dbo.ActionHistory.ActionDateTime AS LastActionDateTime,
      dbo.ActionHistory.Message AS LastActionNote,
      dbo.ActionHistory.ActionHistoryId AS LastQuotationActionHistoryId, 
      dbo.ActionHistory.ActionCategoryId AS LastActionCategoryID, 
      dbo.Client.CompanyName, dbo.Client.RegistrationNumber,    
      dbo.Client.ContactPerson, dbo.Client.ContactCellNumber, 
      dbo.Client.ContactEmail, dbo.Client.ConsultantId, 
      dbo.Consultant.Name, dbo.Consultant.Surname, 
      dbo.Quotation.Active AS QuotationActive, 
      dbo.Client.ClientCategoryId, dbo.Quotation.VerificationType, 
      dbo.Client.NoClientLogin, 
      dbo.VerificationTask.VerificationTaskId, 
      dbo.VerificationTask.StartedDateTime, 
      dbo.VerificationTask.FilePrepConsultantId, 
      dbo.VerificationTask.SubCharterSectorID, 
      dbo.VerificationTask.Active, 
      dbo.VerificationTask.CertificateDirectory, 
      dbo.VerificationTask.FinishDateTime, dbo.VerificationTask.UserId, 
      dbo.VerificationTask.QuoteId, 
      dbo.[User].Name AS UserName, dbo.[User].Surname AS UserSurname, 
      dbo.[User].IdNumber, dbo.[User].CellNumber, 
      dbo.[User].EmailAddress
   FROM                 
      dbo.Quotation 
   INNER JOIN
      dbo.Client ON dbo.Quotation.ClientId = dbo.Client.ClientId 
   INNER JOIN
      dbo.VerificationTask ON dbo.Quotation.QuoteId = dbo.VerificationTask.QuoteId 
   INNER JOIN
      dbo.Consultant ON dbo.VerificationTask.FilePrepConsultantId = dbo.Consultant.ConsultantId 
   INNER JOIN
      dbo.[User] ON dbo.VerificationTask.UserId = dbo.[User].UserId 
   INNER JOIN
      dbo.ActionHistory ON dbo.Quotation.QuoteId = dbo.ActionHistory.QuoteId
   INNER JOIN 
      (SELECT 
           ActionHistory.QuoteId, 
           MAX(ActionHistory.ActionHistoryId) As MaxId 
       FROM     
           ActionHistory 
       WHERE 
           (ActionNameId <> 9) AND (ActionNameId <> 23) 
           AND IsRemoved = 0
       GROUP BY 
           ActionHistory.QuoteId) MaxActionHistory ON MaxActionHistory.MaxId = ActionHistory.ActionHistoryId

【问题讨论】:

    标签: sql sql-server entity-framework tsql


    【解决方案1】:

    看看这篇文章。

    http://blogs.u2u.be/diederik/post/2011/01/31/Building-an-Entity-Framework-40-model-on-views-practical-tips.aspx

    一些提示

    1. 使用SCHEMABINDING
    2. Index the views

    您也可以remove a single plan from SQL Server,或者可能创建一个存储过程并将其映射到 EF。

    【讨论】:

    • 如何从数据库上的 SQL Server 中删除单一计划。
    • 查看我发给你的链接,还有 - 你可以使用 FREEPROCCACHE 发送 plan_handle - blog.sqlauthority.com/2010/08/28/…
    • 太棒了,我会在几天后回来,目前运行“DBCC FREEPROCCACHE”后缓存是干净的,我会等待用户再次联系我,因为网页超时
    • 您可以在运行计划之前清除它,如果您确定没有它会更好,或者捕获超时异常,然后清除计划。
    猜你喜欢
    • 2011-09-08
    • 2012-11-18
    • 1970-01-01
    • 2010-10-07
    • 1970-01-01
    • 1970-01-01
    • 2011-12-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多