Если вам просто нужно создать новую статью, вы можете использовать этот подход:
- В вашей форме вы должны опубликовать статью и либо список идентификаторов тегов, либо имена тегов, присвоенные статье
- Затем вы можете добавить новый
Article
в контекст - Если вы публикуете идентификаторы, вы должны создать фиктивный объект для каждого тега и прикрепить его к контексту
- Если вы публикуете имя, вы должны загрузить объект тегадля каждого имени из базы данных (вам нужен его идентификатор)
- Наконец, вы можете заполнить
Tags
новым Article
, добавленным в контекст (это должен быть тот же контекст, который использовался для присоединения или загрузки Tags
)
Так что должно быть что-то вроде:
context.Articles.AddObject(article);
int[] ids = GetIdsFromRequest();
foreach(var tag in ids.Select(id => new Tag { Id = id }))
{
context.Tags.Attach(tag);
article.Tags.Add(tag);
}
context.SaveChanges();
Это должно работать, потому что вы знаете, что все отношения с тегами являются новыми, но как только вы захотите изменить статью и изменить назначенноетеги вам понадобятся более сложный подход .