我有两个实体BlogPost
和Tag
,我希望能够添加/检索与每个Tag
相关联的BlogPost
列表,还希望能够与BlogPost
相关联的Tag
列表。
从理论上讲,这应该没问题,因为会有一个表格BlogPostTags
,它会将BlogPostId
与TagId
链接在一起。
我遇到的问题是,当我尝试将Tag
添加到新BlogPost
时,BlogPost.Tags
属性为空。
如何初始化列表,甚至只是一个空列表,以便我可以将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
。
答案 0 :(得分: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>();
}
}