mvc认为性能不好

时间:2014-01-27 19:10:16

标签: asp.net-mvc asp.net-mvc-4

我现在的问题是:这个代码在vue上是否真的会进行延迟加载,每次它都会进入数据库?

@{
int langId = ViewBag.LangId;

int i = 0;
foreach (var item in Model)
{
    i++;
    <tr class="@(i % 2 == 0 ? "even" : "odd")">
        <td>
            @Html.DisplayFor(modelItem => item.AlbumsLocs.FirstOrDefault(b => b.LanguageId == langId).Title)
        </td>
    </tr>
}

}

我的控制器代码:

public ViewResult Index()
    {
        var moduleItems = db.Albums.Include(x => x.AlbumsLocs).Where(a => a.AlbumVocId == id).ToList();

        return View(moduleItems);
    }

1 个答案:

答案 0 :(得分:1)

您可能在item.AlbumsLocs.FirstOrDefault(b => b.LanguageId == langId)

中遇到“n + 1”问题

基本上,您在初始请求中使用延迟加载来获取模型。然后,对于该模型中的每个项目,您将访问数据库以获取当前项目的标题。

解决方案是在初始查询中获取标题。

有关n + 1问题的更多信息:What is SELECT N+1?