Entity Framework автоматизированное объединение - PullRequest
1 голос
/ 28 октября 2011

Не думаю, что заголовок моего вопроса достаточно точен, поэтому я попытаюсь объяснить, в чем заключается моя проблема.
У меня есть 2 модели: статья и пользователь

public class Article
{
    public int ID { get; set; }
    [Required]
    public string Title { get; set; }
    [Required]
    [DataType(DataType.MultilineText)]
    public string Content { get; set; }
    [Required]
    public User Author { get; set; }
    public int Likes { get; set; }
} 
public class User
    {
        public int ID { get; set; }
        public string Name { get; set; }
        public string Email { get; set; }
        public ICollection<Article> MyArticles { get; set; }
    }

и контекст моей базы данных

public class Context: DbContext
    {
        public DbSet<User> Users { get; set; }
        public DbSet<Article> Articles { get; set; }
    }

Можно ли перечислить мои статьи в виде и получить доступ к данным из модели «Пользователи» (таблица)? Пример: если я пройду var mode = db.Articles через контроллер я могу сделать что-то вроде

foreach(var item in Model)
{
     <p>item.Title</p>
     <p>item.Content</p>
     <p>item.Author.Name</p>
}

Я почти уверен, что у rails есть такая возможность, и я думал, что в EF 4.1 она тоже есть.

Ответы [ 2 ]

1 голос
/ 28 октября 2011

Прежде всего загрузите User и Article (если вы используете отложенную загрузку, вы можете пропустить этот шаг):

var users = context.Users
    .Include(u => u.MyArticles)                      
    .ToList();

Чем на ваш взгляд проходят списки пользователей:

foreach(var user in Model)
{
   <h2>@user.name</h2>
   foreach(var article in user.MyArticles) {   
      <p>@article.Title</p>   
      <p>@article.Content</p>   
      <p>@article.Author.Name</p>   
   }
}  
1 голос
/ 28 октября 2011

Если ваша модель является экземпляром User, вы можете использовать следующее в своем представлении:

foreach(var article in Model.MyArticles) {
    <p>article.Title</p>
    <p>article.Content</p>
    <p>article.Author.Name</p>
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...