实体对象';的虚拟列表为空,我该如何初始化它
本文关键字:初始化 对象 列表 虚拟 实体 | 更新日期: 2023-09-27 18:00:37
我有两个实体BlogPost
和Tag
,我希望能够添加/检索与每个BlogPost
关联的Tag
的列表,以及与每个Tag
关联的BlogPost
的列表。
理论上,这应该是好的,因为会有一个表BlogPostTags
,它将通过BlogPostId
到TagId
将它们连接在一起。
我遇到的问题是,当我试图将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
。
初始化构造函数中的列表
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>();
}
}