4

私は内部メッセージシステムに取り組んでいます。mvc miniプロファイラーを接続しましたが、いくつかのステートメントが2回実行されていることが示されていますが、その理由がわかりません。

私のコントローラーはあなたが得ることができるのと同じくらい簡単です:

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が2回実行されるのでしょうか。

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ステートメントは2回実行されていません。最初のクエリはLinqステートメントからのものであり、2番目と3番目のクエリは@foreachループからのものだと思います。

于 2011-10-02T05:59:44.957 に答える