LINQ to Entities(等待操作超时)

时间:2018-08-24 09:18:16

标签: sql asp.net-mvc linq timeout linq-to-entities

我想在这里通过一个查询找到帮助。我在ASP.NET MVC项目中使用Entity Framework和SQL DB。有成型机的记录。每条记录都有名称,例如“ 156812 NameOfParameter”,其中编号是成型机生产编号,名称是参数名称,日期。每个成型机周期都会创建一组具有相同日期的记录。但是记录组中没有所有参数。这意味着丢失参数的值与日期较早的第一个记录的值相同,名称如“%NameOfParameter”

我的目标是创建成型机周期清单。这意味着具有相同日期和时间(无milisecunds)的参数列表,并填写所有缺少的值。

特定成型机的数据库中的数据集,日期为->至

var lisData = GetSet().Where(t => t.Name.Contains(cisloLisu));
            if (request.DateFrom.HasValue && request.DateTo.HasValue)
            lisData= lisData.Where(t => t.SampleDateTime >= request.DateFrom.Value && t.SampleDateTime <= request.DateTo.Value);

1)按日期和时间分组(无misecsecunde)

            var set =
            from tag in lisData
            group tag by DbFunctions.CreateDateTime(
                tag.SampleDateTime.Year,
                tag.SampleDateTime.Month,
                tag.SampleDateTime.Day,
                tag.SampleDateTime.Hour,
                tag.SampleDateTime.Minute,
                tag.SampleDateTime.Second)
            into zdvih
            select zdvih;

现在我有IQueryble<IGrouping<DateTime?, HistDataView>>个对象。

2)从这个对象开始,我需要做成型周期清单

      var set2 =
            from zdvih in set
            let wz = 
                zdvih.FirstOrDefault(t => t.Name.Contains("Cislo nastroje")) ??
                lisData.FirstOrDefault(t => t.SampleDateTime < zdvih.Key && t.Name.Contains("Cislo nastroje"))
            let snr =
                zdvih.FirstOrDefault(t => t.Name.Contains("Cislo dilu")) ??
                lisData.FirstOrDefault(t => t.SampleDateTime < zdvih.Key && t.Name.Contains("Cislo dilu"))               
            select new ZdvihView()
            {
                Datum = zdvih.Key,
                CisloNastroje = wz.Value,
                CisloDilu = snr.Value,
            };

问题是我不知道为什么要花这么多时间。即使我只看最后一个小时。我几乎总是收到错误消息“等待操作超时”

Execution Timeout Expired.  The timeout period elapsed prior to completion of the operation or the server is not responding.

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

使用默认的SQL Server分析器来监视已翻译和执行的TSQL查询。转换后的TSQL查询可能需要太多时间才能执行。如果没有,请使用Linq Insight之类的linq分析器来分析您的查询并找到瓶颈。