2011-06-25 6 views
1

Goog Day!
サブエンティティの組み込み方法を教えてもらえますか? 私はForumプロジェクトを持っています。ページには、トピックのすべての投稿を表示する必要があるときに、すべての投稿に投稿情報がありますが、そのときユーザーのグループとユーザーの役割に関する情報が必要です。 (私は画像(低評判)を添付することはできませんので、私は言葉でテーブルを記述してみてください)
ポスト: ID、タイトル、テキスト、ユーザーID // Post.UserId = User.Id
ユーザー: ID 、名前、RoleId、グループID // User.RoleId = RefRole.IdとUser.GroupId = RefGroup.id
RefGroup: ID、名前
RefRole: ID、名前
Entity Frameworkを使用してASP.Net MVC3にサブエンティティを含める方法

私はちょうど含まれている場合ユーザーエンティティこのようにします:

public ActionResult ViewTopic (int id) 
    { 
     ForumDBE forumDB = new ForumDBE(); 
     var posts = forumDB.Post.Include("User").ToList(); 
     return View(posts); 
    } 

var投稿私はRoleName(exapmple管理者、モデレーター、ユーザー)とグループ名(例:グッドユーザー、ベストユーザー、アドバイスなど)を表示する必要があります。このような?

@model IEnumerable<MvcForum.Models.Post> 

@foreach (var post in Model) 
{ 
    User Name: @post.User.Name 
    User Group: @post.User.RefGroup.Name 
    Uset Role: @post.User.RefRole.Name 
} 
+2

試しましたか?Include( "User")。Include( "User.RefGro up ")。Include(" User.RefRole ")。メモリからは、この作品が、私は100%ではないので、私は答えではなくコメントします。例えばLINQ-to-SQLで –

+0

を実行すると、 'Users'テーブルと' RefGroups'テーブルの間の関係を持つモデルを取得すると、自動的に 'User''の' RefGroup'という名前の新しいプロパティを定義します。しかし、EFでは、私は助けることができません。 –

+0

私は数日間、答えを探していました...ありがとう、非常に!できます!! ( "User.RefRole")。ToList(); ' –

答えて

1

Entity Frameworkの4デフォルトの設定では、あなたがIQueryableなくIEnumerable

を使用しているので、その後、

@model IQueryable<MvcForum.Models.Post> 

@foreach (var post in Model) 
{ 
    User Name: @post.User.Name 
    User Group: @post.User.RefGroup.Name 
    Uset Role: @post.User.RefRole.Name 
} 

それは遅延ロードを使用しますInclude

public ActionResult ViewTopic (int id) 
    { 
     ForumDBE forumDB = new ForumDBE(); 
     var posts = forumDB.Post; // or you can use .ToList() but I prefer to use IQueryable 
     return View(posts); 
    } 

を使用する必要はありません

+0

これは' var posts = forumDB.Post 'の働きをします。 ToList(); 'too ...皆さん、ありがとうございます!ありがとう!! –