1

2つのエンティティBlogPostとがあり、それぞれに関連付けられているのリストだけでなく、それぞれに関連付けられているのリストTagも追加/取得できるようにしたいと考えています。TagBlogPostBlogPostTag

理論的には、これらをにBlogPostTagsリンクするテーブルがあるため、これで問題ありません。BlogPostIdTagId

私が抱えている問題はTag、新しいにsを追加しようとするBlogPostと、BlogPost.Tagsプロパティがnullになることです。

を追加できるように、リストを空のリストに初期化するにはどうすればよいTagですか?

public class BlogPost
{
    public int BlogPostId { get; set; }
    public string BlogTitle { get; set; }
    public string BlogContent { get; set; }

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

public class Tag
{
    public int TagId { get; set; }
    public string TagName { get; set; }

    public virtual List<BlogPost> BlogPosts { get; set; }
}

タグは次のように作成されます。

Tag tag1 = context.Tags.Create();
tag1.TagName = "test1";
context.Tags.Add(tag1);
context.SaveChanges();

そして、私はそれらを新しいものに追加できるようにしたいと思いますBlogPost

BlogPost post = context.BlogPosts.Create();
post.BlogTitle = "Test post";
post.BlogContent = "this is a test blog and as such lorem bacon.";
post.DatePosted = DateTime.Now;
post.Tags.Add(tag1);
context.BlogPosts.Add(post);
context.SaveChanges();

しかし、post.TagsスローしObject reference not set to an instance of an objectます。

4

1 に答える 1

3

コンストラクターでリストを初期化します

public class BlogPost
{
    public int BlogPostId { get; set; }
    public string BlogTitle { get; set; }
    public string BlogContent { get; set; }

    public virtual List<Tag> Tags { get; set; }
    public BlogPost()
    {
        Tags = new List<Tag>();
    }
}

他のクラスも同じです

public class Tag
{
    public int TagId { get; set; }
    public string TagName { get; set; }

    public virtual List<BlogPost> BlogPosts { get; set; }

    public Tag()
    {
        BlogPosts = new List<BlogPost>();
    }
}
于 2013-02-21T15:36:03.897 に答える