В настоящее время я использую Entity Framework в проекте ASP.NET MVC 3. И у меня возникают серьезные проблемы с производительностью, когда вы просматриваете записи в представлении.Entity Framework 4.1 Проблемы с производительностью
Данные получены быстро, поэтому я знаю, что это не подключение к нашему удаленному серверу oracle, и в модели, которую я использую, нет ленивых загруженных отношений, но каждая запись занимает 120-300 мс для обработки простого 3 с выходным сигналом.
В настоящее время загрузка страниц с 800-страничными записями занимает более 3 минут.
Я пробовал настройку с настройками, но никто, кажется, не помогает.
У кого-нибудь есть идеи?
редактировать: код контроллера
readonly OracleSampleManagerContext db = new OracleSampleManagerContext();
public virtual ActionResult Index()
{
var spList = db.SamplePoints.OrderBy(e=>e.Id).ToList();
return View(MVC.Reports.Views.SamplePointList, spList);
}
<h2>
Selection By Sample Point
</h2>
<table>
@foreach (var sp in Model)
{
System.Diagnostics.Stopwatch sw = new System.Diagnostics.Stopwatch();
sw.Start();
<tr>
<td>@Html.ActionLink(sp.Id, MVC.Reports.Results(sp.Id))</td>
<td>@sp.Description</td>
<td>@sp.PointLocation</td>
<td>@sw.ElapsedMilliseconds</td>
</tr>
sw.Stop();
sw.Reset();
}
</table>
Пример:
0200 72" Sewer to river - Once through cooling water OUTFALLS 346ms
0400 66" Sewer to river - Combined effluent OUTFALLS 347ms
0500 54" Sewer to river - Once through cooling water OUTFALLS 388ms
06-AI-18 TBA in Water IB2 228ms
06-AI-31 TBA in Water IB2 172ms
Вам нужно будет показать нам больше. Как вы заселяете модель? Что такое MVC.Reports.Results()? –
Действительно ли выполняется запрос, когда 'Model' создан? Например, вы делаете 'ToList()' в то время? –
, и это крошечный nitpick, но вы должны переместить строку объявления секундомера на внешнюю часть цикла –