関連データを自分のビューに渡す際に問題が発生しているようです。3 つのテーブルのデータベース アーキテクチャを持つ単純なブログを作成しています。これらは、ユーザー、投稿、およびコメントです。私のユーザー プロファイル ページでは、これらのテーブルのすべてのデータをユーザー プロファイル ビューに渡したいと考えています。Linq to SQl を使用してデータベース モデルを作成しました。Linq を使用してデータを渡す試みは次のとおりです。
public ActionResult NewProfile()
{
var users = from u in db.UserModels
join p in db.PostModels on u.UserId equals p.UserId
where u.UserId == WebSecurity.CurrentUserId
select new Profile { UserModel = u, PostModel = p };
return View(users);
}
これは受信ビューのコードです:
@model IEnumerable<MvcBlog.Models.Profile>
@{
ViewBag.Title = "NewProfile";
}
<h2>NewProfile</h2>
@foreach (var item in Model)
{
@item.UserModel.Username
}
結果を説明する前に、データベース内のデータについて説明することが重要だと思います。現在、ユーザーは 3 人しかいません。これらのユーザーのうち 1 人 (gb201) だけがブログ投稿を作成しました。ユーザー gb201 は合計 2 つのブログ投稿を作成しました。
プログラムを実行し、ユーザー gb201 としてログインすると、NewProfile ページに次のデータが表示されます。
New Profile
gb201
gb201
ビューには 2 つのテーブルからデータが渡されますが、ユーザー テーブルにクエリを実行したい場合、そのユーザーの投稿数に基づいてデータが複製されます。したがって、ユーザーの投稿が 1 つしかない場合、その投稿は 1 回しか表示されません。何も投稿していない他の 2 人のユーザーについては、このページに表示される情報はありません。
データベースにクエリを実行しているlinqコードが間違っていると思いますが、何が間違っているのかわかりません。長い質問で申し訳ありませんが、助けていただければ幸いです。