Как включить подобъект в ASP.Net MVC3 с Entity Framework - PullRequest
1 голос
/ 25 июня 2011

Goog Day!
Кто-нибудь может подсказать, как включить подобъект?У меня есть проект форума.На странице, когда мне нужно отобразить все сообщения темы, в каждом сообщении есть информация о посте, информация о пользователе, но в то время мне нужна информация о группе пользователя и роли пользователя.(Я не могу прикрепить изображение (низкая репутация), поэтому я пытаюсь описать таблицы словами) Post: id, Title, Text, UserId // Post.UserId = User.Id Пользователь: id, Name, RoleId, GroupId // User.RoleId = RefRole.Id и User.GroupId = RefGroup.id RefGroup: идентификатор, имя RefRole: id, Name

Если я включаю только сущность пользователя, я делаю это так:

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

Но что мне нужно сделать, когда на var post мне нужно иметь RoleName (например, «Администратор», «Модератор», «Пользователь») и «Имя группы» (например, «Хороший пользователь», «Лучший пользователь», «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
}

1 Ответ

1 голос
/ 25 июня 2011

В конфигурации по умолчанию Entity Framework 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...