0
这是我的标签表,一个标签可以有多个帖子:插入数据,以多对多的连接表
public class Tag
{
public int TagId { get; set; }
public string TagName { get; set; }
public IList<Post> Posts { get; set; }
}
这是我的Post类,一个岗位可以有多个标签:
public class Post
{
[Key]
public int PostId { get; set; }
// other related code
public IList<Tag> Tags { get; set; }
}
这两个类已经创建在数据库列中的新的表TagPost(TAGID,帖子ID) 现在,我已经适当地与流畅API配置,数据插入到TagPost表是这样的:
modelBuilder.Entity<Tag>()
.HasMany(p => p.Posts)
.WithMany(t => t.Tags)
.Map(m =>
{
m.ToTable("TagPost");
m.MapLeftKey("TagId");
m.MapRightKey("PostId");
});
,这是我的控制器将数据插入到后级这样的,在这里我得到选定的标签,但在每个列表,在最后一行它给System.NullReferenceException.The代码:
public JsonResult Post(Post post,IEnumerable<int> MultipleTags)
{
post.User = User.Identity.GetUserId<int>();
foreach (var tagId in MultipleTags)
{
var tag = new Tag { TagId = tagId };
// db.Tags.Attach(tag); // this avoids duplicate tags
post.Tags.Add(tag); // getting error here, system.nullReferenceException
}
db.Posts.Add(post);
db.SaveChanges();
var usr = db.Users.FirstOrDefault(x => x.Id == post.PostedBy);
var ret = new
{
TagName = string.Join(",", post.Tags.Select(t => t.TagName)),
};
return Json(ret,JsonRequestBehavior.AllowGet);
,当我悬停,我可以看到标签包含正确的id值,这里有什么错误,它工作得很好,但现在它在这里给予我建议。
thnks它的工作,但现在,新的问题,你可以在编辑的控制器中看到,TagName仍然返回null,可能是与加载/延迟加载有关的事情。 plzz看,它应该返回所有的标签名称,但空引用异常 – neo
我不这样。标量属性不会延迟加载。当你加载一个实体时,所有的都被加载,也许它没有正确保存(如果是这种情况),或者你不应该有该列的值 – octavioccl
在数据库中正确保存我已经检查两次让我再次检查它 – neo