4

我正在开发一个内部消息系统。我连接了 mvc 迷你分析器,它显示一些语句被执行了两次,我不知道为什么,

我的控制器非常简单:

var db = MessagingDataContext.Get();
return db.Posts.OrderByDescending(p => p.DatePosted).Skip(pagenumber * pagesize).Take(pagesize);

我的观点也很简单(我的 _Layout 页面有其余的标记):

@foreach (var post in Model)
{
    <div class="post">
        <p>
            @Html.ActionLink(post.Title, "View", "Posts", new { postid = post.Id})  by @post.User.Name
        </p>
    </div>
}

那么为什么 get_User 会被执行两次呢?

4

3 回答 3

4

我的猜测是因为该@post.User.Name部分正在为每条记录执行。原始查询是否返回 2 个结果?

解决此问题的最佳方法是在原始查询中进行选择以获取您想要的所有信息(标题、ID 和用户名)。

于 2011-10-02T06:02:36.233 回答
1

该查询正在获取每个用户的用户名。参数@p0 是用户ID。如果您检查它的值,您很可能会发现每个查询的值都不同。

于 2011-10-02T05:58:57.707 回答
0

Linq 语句没有被执行两次。第一个查询来自 Linq 语句,我猜第二个和第三个查询来自你的 @foreach 循环。

于 2011-10-02T05:59:44.957 回答