Мой DAL основан на коде Entity Framework First.
У меня есть модель поста и модель тега. К одному сообщению может быть прикреплено несколько сообщений.
Вот мой пост:
public class Post
{
[Key]
public int PostID { get; set; }
...
public virtual ICollection<Tag> Tags { get; set; }
}
Вот мой тег:
public class Tag
{
[Key]
public int TagID { get; set; }
[Required, StringLength(50)]
public string Name { get; set; }
public virtual ICollection<Post> Posts { get; set; }
}
Когда я сохраняю свое сообщение, у меня нет ошибок, но в БД ничего не сохраняется.

Как вы можете видеть на скриншоте выше, TagID равен 0, и я не знаю почему ???

Есть идеи? Предложения? * * 1023
Мои таблицы правильно созданы в Sql Server.
Спасибо.
PS: Мой код должен быть в порядке, потому что я копирую / вставляю его из другого места (где он работает).
UPDATE
Вот код для обновления тегов сущностей (под конкретным постом)
Tag t = m_TagRepository.GetTag(tag.Trim().ToUpper());
if (t == null) t = new Tag { Name = tag.Trim().ToUpper() };
post.Tags.Add(t);
Вот код для сохранения изменений в сообщении (и тег ниже)
public void SavePost(Post post)
{
if (post.PostID == 0)
{
m_Context.Posts.Add(post);
}
else
{
var entry = m_Context.Entry(post);
entry.State = EntityState.Modified;
}
m_Context.SaveChanges();
}
Я получаю сообщение обратно со страницы редактирования:
[Authorize, HttpPost, ValidateInput(false), Theme("Admin")]
public ActionResult Edit(PostFullViewModel postToEdit)
{
if (!ModelState.IsValid)
return View();
Post post = Mapper.Map<PostFullViewModel, Post>(postToEdit);
m_PostBusiness.UpdateTags(post, postToEdit.TagString);
m_PostBusiness.SavePost(post);
TempData.SetStatusMessage(Strings.Post_SavedSuccessfully);
return RedirectToAction("Manage");
}