2011-06-25 83 views
1

Goog Day!
任何人都可以告訴如何包含子實體嗎? 我有論壇項目。這個頁面,當我需要顯示所有帖子的帖子時,每個帖子都有帖子信息,用戶信息,但是那個時候我需要有用戶組和用戶角色的信息。 (我不能將圖像(低信譽),所以我儘量來描述詞表)
帖子: ID,標題,文字,用戶ID // Post.UserId = User.Id
用戶: ID ,名稱,角色ID,GroupId的// User.RoleId = RefRole.Id和User.GroupId = RefGroup.id
RefGroup: ID,姓名
RefRole: ID,姓名
如何使用實體框架在ASP.Net MVC3中包含子實體

如果我只包括用戶實體我這樣做:

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

但是我需要做什麼,在var post我需要在View中有角色名稱(例如Administrator,Moderator,User)和Group Name(例如Good User,Best User,Advicer ...)喜歡這個?

@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上 「)。包括(」 User.RefRole「)。從記憶這個作品,但我不是100%,所以我會評論而不是回答。在LINQ-to-SQL中使用 –

+0

,例如,當你得到的模型與'Users'表和'RefGroups'表之間的關係時,它會自動在'User'中定義一個名爲'RefGroup'的新屬性。但在英孚,我無能爲力。 –

+0

我花了幾天的時間尋找答案......非常感謝!有用!! ('User.RefGroup').include(「User.RefRole」)。ToList();' –

回答

1

在實體框架4的默認配置,你不必使用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); 
    } 

然後

@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 
} 

,因爲你正在使用IQueryable而不是IEnumerable

它將使用延遲加載
+0

它工作'var posts = forumDB.Post。 ToList();'太...謝謝大家的幫助!謝謝!! –