【问题标题】:Entity Framework Poor Performance实体框架性能不佳
【发布时间】:2014-09-14 16:54:24
【问题描述】:
enter image description here
我在 C# Windows 窗体应用程序中使用 EF 6.1.1,但在性能因素方面遇到了奇怪的问题。
我的数据库有一个名为 Ticket 的表,有 49300 条记录。此表链接了多个其他表。实体框架图可在:http://i.imgur.com/u4gKVFI.png
记录数如下:
计费选项 4
公司 390
联系 687
地点 3
会员 16
服务板 6
服务项目 0
服务优先级 8
服务源 5
服务状态 93
服务子类型 668
服务类型 20
票号 49300
时间条目 52518
TimeEntryMember 0
工作角色 10
工作类型 5
我的 EF 数据上下文可作为类的静态变量全局使用。当我触发以下代码时,加载数据需要 12-15 秒(仅谈论 .ToList() 方法)。 并与 DataGridView 绑定。有什么方法可以提高性能?
公共静态列表 LoadTicket()
{
bool lastValue1 = DataAccessLocal.dc.Configuration.AutoDetectChangesEnabled;
bool lastValue2 = DataAccessLocal.dc.Configuration.ProxyCreationEnabled;
DataAccessLocal.dc.Configuration.AutoDetectChangesEnabled = false;
DataAccessLocal.dc.Configuration.ProxyCreationEnabled = false;
var returnValue = (来自 DataAccessLocal.dc.Tickets.AsNoTracking() 中的 r
选择新的 LinqTicket
{
摘要 = r.摘要,
DetailDescription = r.Summary,
分辨率 = r.Resolution,
CompanyName = r.Company.CompanyName,
ContactName = (r.Contact == null ? string.Empty : r.Contact.FirstName + " " + r.Contact.LastName),
BoardName = r.ServiceBoard.ServiceBoardName,
优先级 = r.ServicePriority.ServicePriorityName,
源 = r.ServiceSource.ServiceSourceName,
位置 = r.Location.LocationName,
ServiceType = r.ServiceTypeRecId == null ? string.Empty : r.ServiceType.ServiceTypeName,
ServiceSubType = r.ServiceSubTypeRecId == null ? string.Empty : r.ServiceSubType.ServiceSubTypeName,
ServiceItem = r.ServiceItemRecId == null ? string.Empty:r.ServiceItem.ServiceItemText,
StatusName = r.ServiceStatus.ServiceStatusName,
TicketRecId = r.TicketRecId,
RemoteTicketId = r.RemoteTicketRecId.Value,
DueDate = r.RequiredDate == null ?新的 DateTime(1900, 1, 1) : r.RequiredDate.Value,
EstimatedHours = r.BudgetHours == null ? 0:r.BudgetHours.Value,
ServiceBoardId = r.ServiceBoard.ServiceBoardRecId,
InternalStatus = r.InternalStatus.HasValue == true ? (enmInternalStatus)r.InternalStatus.Value : enmInternalStatus.OK,
LastUpdatedByMemberRecId = r.LastUpdatedByMemberRecId
}).ToList();
DataAccessLocal.dc.Configuration.AutoDetectChangesEnabled = lastValue1;
DataAccessLocal.dc.Configuration.ProxyCreationEnabled = lastValue2;
返回返回值;
}
【问题讨论】:
标签:
c#
sql
entity-framework
datagridview