多对多的映射/种子

时间:2014-07-19 07:41:40

标签: asp.net-mvc asp.net-mvc-3 mapping

我有3个带映射的模型。

问题是当我尝试种子时我得到NullReferenceException。

    [Table("Articles")]
public class Article
{
    [Required]
    public int Id { get; set; }

    public string Title { get; set; }

    public DateTime Date { get; set; }

    public string Text { get; set; }

    public virtual List<Comment> Comments { get; set; }

    public virtual List<Tag> Tags { get; set; }
}

[Table("Tags")]
public class Tag
{
    [Required]
    public int Id { get; set; }

    [Required]
    public string Name { get; set; }

    public virtual List<Article> Articles { get; set; }
}

[Table("Comments")]
public class Comment
{
    [Required]
    public int Id { get; set; }

    [Required]
    [DataType(DataType.MultilineText)]
    public string Text { get; set; }

    public DateTime Date { get; set; }

    [Required]
    public virtual Article Article { get; set; }
}

    public ArticleMapping()
    {
        this.HasKey(m => m.Id);

        this.HasMany(m => m.Comments);

        this.HasMany(m => m.Tags);
    }

    public CommentMapping()
    {
        this.HasKey(m => m.Id);

        this.HasRequired(m => m.Article);
    }

    public TagMapping()
    {
        this.HasKey(m => m.Id);

        this.HasMany(m => m.Articles);
    }

这是我种子数据的方式:

protected override void Seed(MychineContext context)
    {
        Article article = new Article();
        article.Title = "Looking for trouble";
        article.Date = DateTime.Now;
        article.Text = "Lorem ipsum dolor sit amet";

        context.Articles.Add(article);

        Tag tag = new Tag();
        tag.Name = "PHP";
        tag.Articles.Add(article);

        article.Tags.Add(tag);

        context.Articles.Attach(article);

        context.SaveChanges();

        base.Seed(context);
    }

这种映射是否正确?如果我使用&#34; migration&#34;我每次都需要重置所有数据吗?

1 个答案:

答案 0 :(得分:0)

感谢您的回答。

我解决了这个问题。

标签是一个列表,我忘了在添加标签之前创建实例。