如何在ASP.Net MVC3中使用实体框架包含子实体

本文关键字:实体 框架 包含 ASP Net MVC3 | 更新日期: 2023-09-27 18:00:27

Goog Day
有人能告诉我们如何包括子实体吗?我有论坛项目。在页面上,当我需要显示主题的所有帖子时,每个帖子都有帖子信息、用户信息,但那时,我需要有用户组和用户角色的信息。(我无法附上图片(声誉低),所以我尝试用文字描述表格)
帖子:id,Title,Text,UserId//Post.UserId=User.id用户:id、Name、RoleId、GroupId//User.RoleId=RefRole.id和User.GroupId=RefGroup.id
参考组:id,名称
参考角色:id,名称

如果我只包括用户实体,我会这样做:

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

但是,当在var post中,我需要在View中设置RoleName(例如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
}

如何在ASP.Net MVC3中使用实体框架包含子实体

在实体框架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