asp.net mvc -多选-多对多- c#, EF savechanges()

本文关键字:EF savechanges net mvc 多选 asp | 更新日期: 2023-09-27 17:52:48

从这一行开始使用multiselect:mvc 4多选列表&EF多对多

当我试图将所有更改保存回上下文时,它们不保存,只保存博客数据而不保存类别。

唯一的出路是先保存Bind数据,创建一个新的上下文,然后保存列表。

有什么建议吗?

下面是控制器代码,它不保存类别,但它保存博客数据从文章:

public ActionResult Edit(int id,Blog blog, int[] selectedCategories)
{
    blog.Categorys = new List<Category>(); //adding because coming back null
    //loop though and add the items posted
    foreach (var item in selectedCategories)
    {
    Category c = db.Categorys.Find(item);
    blog.Categorys.Add(c);
    }
    db.Blogs.Attach(blog);
    db.Entry(blog).State = EntityState.Modified;
    db.SaveChanges();
return View("Test", blog);
}

值被添加到blog Model ok,但不保存到数据库

asp.net mvc -多选-多对多- c#, EF savechanges()

代码没有显示对类别的任何更改。您正在查找数据库中已经存在的一个类别,并创建一个blog ->类别关联。根据您的关系映射,dbcontext不会检测到需要对categories表进行任何更改。