Я немного теряю, почему одно из моих представлений ASP в моем приложении MVC работает так медленно.Соединение таблицы в приложении MVC очень медленное
Я выбираю некоторые данные, используя linq в контроллере. Это работает быстро:
public ActionResult Progress(int ID)
{
var reviewitems = from ri in db.ReviewItems
where ri.Enrolment.Course.LearningArea.LearningAreaID == ID && ri.Review.ReviewSeries.StartDate < DateTime.Now && ri.Review.ReviewSeries.EndDate > DateTime.Now && ri.Progress < 2
select ri;
return View("Progress", reviewitems);
}
Я тогда сделать цикл по каждому элементу в представлении ASP, проходя через каждую строку данных типа «reviewitem», который был принят в представлении. Опять же, это быстро:
<%foreach (var ri in Model)
{ %>
<tr>
<td><%= ri.Progress %></td>
</tr>
<%} %>
мне нужно больше информации для отображения, так что мне нужно, чтобы присоединиться к столу «Review» (что опять-таки дает быстрые результаты), а затем к столу «Student». Это где проблема и она начинает принимать свыше 30 секунд:
<%foreach (var ri in Model)
{ %>
<tr>
<td><%= ri.Review.Student.Surname %></td>
</tr>
<%} %>
Каждый обзор ссылок запись до одного уникального студента, так что я не понимаю, почему он так долго. У кого-нибудь есть идеи, где я должен начать искать, почему это так медленно? Предположительно, это как-то связано с таблицей «Студент» (которая на самом деле является представлением SQL Server), но я могу выбрать из нее все строки за секунду, используя SQL?
Как вы создаете связь между Review and Student, если Student является View? Используете ли вы Linq для Sql или Entity Framework? –
@MystereMan Я не уверен быть честным - это приложение, которое я унаследовал от кого-то еще! У меня есть модель DBML в приложении MVC, которую я использую для настройки всех отношений, но я не знаю, является ли это модель данных Entity Framework или нет. – Chris
DBML означает Linq to Sql. Честно говоря, если вы даже не знаете, какую технологию вы используете, я бы сказал, что вы над головой, и вам нужно немного узнать о том, с чем вы работаете. –