私はこの質問を書き直しています:
私は2つのモデルを持っています。エントリーとトピック。
public class Entry
{
public int EntryId { get; set; }
public int UserId { get; set; }
public int TopicId { get; set; }
public String EntryQuestion { get; set; }
public String EntryAnswer { get; set; }
public int EntryReview { get; set; }
public String QuestionValidationURL { get; set; }
public virtual ICollection<Topic> TopicList { get; set; }
}
public class Topic
{
public int TopicId { get; set; }
public String TopicName { get; set; }
}
ASP.Net/MVC の例に従って、この方法でモデルをセットアップしました。私がやりたいことは、TopicId を持っているすべてのエントリ アイテムに対してですが、TopicList にアクセスしてそれを TopicName に変換したいと考えています。
私の質問は、TopicList をどのようにロードするのですか?
私がフォローしている例では、LazyLoading と EagerLoading について何かを見ていますが、機能していないようです。
Entryコントローラーから次のことを試しました:
db.Entries.Include(x => x.TopicList).Load();
しかし、それでも0のTopicListが得られます(これはnullよりも優れています)
これどうやってするの?
私の見解では、次のようにエントリにバインドしています。
@model IEnumerable<projectInterview.Models.Entry>
ここで TopicList にアクセスしたいと思います。
@foreach (var item in Model) {
<tr>
<td>
@Html.DisplayFor(modelItem => item.TopicId)
</td>
...
</tr>
このループで TopicId を使用して、コレクション内のオブジェクトの一部である TopicName を表示したいと思います。