2017-04-09 13 views
0

類型'Post'上的屬性'標籤'不是原始或複雜屬性。 Property方法只能用於原始或複雜屬性。使用參考或收集方法。Property方法只能用於原始或複雜屬性。使用引用或收集方法

我使用更新這個代碼片段後的文本和相關標籤:

  var tags = TagConverter.FetchTags(postText); 
      var newTags = tags.Select(t => t.Title); 
      var savedTags = _db.Tags.Where(t => newTags.Contains(t.Title)).ToList(); 
      var notSavedTags = tags.Where(t => savedTags.All(st => st.Title != t.Title)).ToList(); 
      var insertedTags = _db.Tags.AddRange(notSavedTags).ToList(); 
      insertedTags.AddRange(savedTags); 
      _db.SaveChanges(); 


      var updatedPost = post; 
      updatedPost.Title = postText; 
      updatedPost.Tags = insertedTags; 
      _db.Posts.Attach(updatedPost); 
      var entry = _db.Entry(updatedPost); 
      entry.Property(e => e.Title).IsModified = true; 
      entry.Property(e => e.Tags).IsModified = true; 


      _db.SaveChanges(); 

如何更新標籤?

+0

'post'從哪裏來?爲什麼要通過'SaveChanges'調用分別保存標籤?他們是否有多對多的關係? –

回答

0

設置IsModified適用於單個實體,不適用於集合。這就是爲什麼這條線不工作:

entry.Property(e => e.Tags).IsModified = true; 

正如你已經連接所有標籤上下文,你需要手動比較和更新insertedTags收集updatedPost.Tags

+0

你可以在代碼中解釋這個嗎? – Mostafa

相關問題