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 codefirst 创建一个TagArticles用列调用的表Tag_IdArticle_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

当我把它放进去时,你上面的代码对我有用,但我必须添加主键才能真正保存数据库。

你在哪里设置主键?那是在实体继承中吗?

播种后,数据库中是否有文章和标签(在我纠正 PK 问题之前,我没有)

于 2012-08-03T14:11:23.840 回答