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