实体对象';的虚拟列表为空,我该如何初始化它

本文关键字:初始化 对象 列表 虚拟 实体 | 更新日期: 2023-09-27 18:00:37

我有两个实体BlogPostTag,我希望能够添加/检索与每个BlogPost关联的Tag的列表,以及与每个Tag关联的BlogPost的列表。

理论上,这应该是好的,因为会有一个表BlogPostTags,它将通过BlogPostIdTagId将它们连接在一起。

我遇到的问题是,当我试图将Tags添加到新的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

实体对象';的虚拟列表为空,我该如何初始化它

初始化构造函数中的列表

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>();
    }
}