2016-08-31 6 views
0

Это как мои объекты выглядеть следующим образом:Entity Framework многие ко многим, вставить

enter image description here

Мой вопрос заключается в том, чтобы добавить Comment объект News объекта и как обновлять и удалять Comment новостей?

Вот News класс:

News news = db.News.SingleOrDefault(n => n.NewsId == Id); 
+3

На мой взгляд, ваша модель должна быть пересмотрена. Я не вижу необходимости в вашей организации 'NewsComment'. Он не содержит никакой полезной информации. Сделайте 'Комментарии' навигационным свойством' News'. Если это много-ко-многим, это отношение будет обрабатываться внутренне, без необходимости в сущности 'NewsComment'. –

+1

Это пример или реальная схема? Я спрашиваю, потому что из опыта пользователя не имеет смысла, что комментарий может быть применен к нескольким новостям. –

+0

@ErikPhilips Я видел этот тип модели, используемой ранее (специально для комментариев). он реализуется с таблицей отношений, что подразумевает много-ко-многим, но на практике это один-ко-многим, потому что один комментарий НЕ должен быть привязан к нескольким родительским объектам. –

ответ

2

Как ваша модель стоит сейчас, вы можете сделать это следующим образом:

News news = db.News.SingleOrDefault(n => n.NewsId == Id); 
Comment comment = new Comment { Body = "This is my comment" }; 
NewsComment newsComment = new NewsComment { News = news, Comment = comment }; 
news.NewsComments.Add(newsComment); 
db.SaveChanges(); 

Лично я хотел бы настроить модель, чтобы забрать NewsComment объект , Ваш объект News будет иметь свойство «много-ко-многим» Comments, а таблица отношений будет обрабатываться внутренне. Ваш код будет затем стать:

News news = db.News.SingleOrDefault(n => n.NewsId == Id); 
Comment comment = new Comment { Body = "This is my comment" }; 
news.Comments.Add(comment); 
db.SaveChanges(); 

Edit: Чтобы удалить комментарий с текущей моделью, удалите его из свойства коллекции:

News news = db.News.SingleOrDefault(n => n.NewsId == Id); 
NewsComment commentIDontWant = news.NewsComments.First(nc => nc.Comment.Body == "Bad Comment"); 
news.NewsComments.Remove(commentIDontWant); 
db.SaveChanges(); 
Смежные вопросы