3

私は多対多の関係を持っています。

タグには複数の記事を含めることができ、記事には複数のタグを含めることができます。

public class Article : Entity
{
    [StringLength(150)]
    public string Name { get; set; } 
    public string Content { get; set; } 
    public ICollection<Tag> Tags { get; set; }
}
public class Tag : Entity
{
    public string Name { get; set; }
    public ICollection<Article> Articles { get; set; }
}

ef コードは最初TagArticlesに、列Tag_Idと呼ばれるテーブルを作成し、Article_Id

こんな風に種まきしてみました

    protected override void Seed(Context context)
    {
        var articles = new List<Article>();
        for (int i = 0; i < 10; i++)
        {
            articles.Add(new Article { Name = "test " + i,  Content = "lourm ipsum"  });
        }
        var tags = new List<Tag>();
        for (int i = 0; i < 10; i++)
        {
            tags.Add(new Tag { Name = "tag " + i , Articles = new  Article[]{ articles[0] }});
        }
        context.Articles.AddOrUpdate(x => x.Name, articles.ToArray());
        context.Tags.AddOrUpdate(x => x.Name, tags.ToArray());
    }

しかし、移行後に TagArticles テーブルは空です。ブリッジ テーブルをシードするにはどうすればよいですか?

4

1 に答える 1

1

上記のコードは、挿入したときに機能しましたが、データベースを実際に保存するには、主キーを追加する必要がありました。

主キーをどこに設定していますか?それはEntityの継承にありますか?

シードした後、データベースに記事とタグがありますか (PK の問題を修正するまで、私にはありませんでした)

于 2012-08-03T14:11:23.840 に答える