Entity Framework自動結合

I don't think the title of my question is pretty accurate so I'll try to explain what my problem is .
I have 2 models : Article and User

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
MyArticles { get; set; } }

and my database context

public class Context: DbContext
    {
        public DbSet Users { get; set; }
        public DbSet
Articles { get; set; } }

私の記事をビューに表示し、Usersモデル(テーブル)からデータにアクセスする方法はありますか? 例:コントローラから var mode = db.Articles を渡すと 私は何かを作ることができますか?

foreach(var item in Model)
{
     
item.Title


item.Content


item.Author.Name

}

レールがこの可能性を持っていることは確かだし、EF 4.1でもそれがあったと思った。

1

2 答え

モデルが User のインスタンスである場合、ビューで次のように使用できます。

foreach(var article in Model.MyArticles) {
    
article.Title


article.Content


article.Author.Name

}
1
追加された
これは、単一のユーザーをビューに渡す必要があるためです。それ以外の場合は、モデル内のユーザーを反復処理し、外側のループからそのユーザーを使用するようにコードを変更する必要があります
追加された 著者 flipchart,
私はそれを試み、それは私にこのエラーを与える_CS1061: 'System.Collections.Generic.IEnumerable ‌'の定義が含まれていない 'MyArticles'と拡張メソッド 'MyArticles'最初の引数を受け入れる型 'System.Collections.Generic.IEnumerable ‌'が見つかりました_
追加された 著者 lesce,

まず最初に、ユーザーと記事を読み込みます(遅延ロードを使用する場合は、この手順をスキップできます)。

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

あなたのビューよりもユーザーリストを渡す:

foreach(var user in Model)
{
   

@user.name

   foreach(var article in user.MyArticles) {   
      
@article.Title
@article.Content
@article.Author.Name } }
1
追加された
「このコマンドに関連付けられている開いているDataReaderは既にありますが、最初に閉じる必要があります」というエラーが表示されます。何か案は ?
追加された 著者 lesce,
OK私は知った!接続文字列にMultipleActiveResultSets = trueを設定する必要があります。 :D
追加された 著者 lesce,