如何更新EF中具有多对多关系的条目?

时间:2017-08-17 04:58:58

标签: c# .net entity-framework

我的模型如下:

public class Product
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string Code { get; set; }
    public double Price { get; set; }

    public ICollection<Category> Categories { get; set; }
}

类别模型如下:

public class Category
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string Code { get; set; }

    public ICollection<Product> Products { get; set; }
}

我想更新产品的条目。这是有效的,但如果我编辑没有类别的产品,我会收到错误。如何添加带或不带类别的新产品?

如何将包含多个类别的现有产品更新为无类别?

有人可以解释一下这方法是什么吗?

1 个答案:

答案 0 :(得分:0)

也许试试这个。

这是要更新的产品。

//get your product
var product = context.Products.Include("Categories")
        .First();

// remove categories for product
product.Categories.Clear();
//save changes
context.SaveChanges();

/* if that doesn't work try this alternate way to remove categories for product*/
var categories = product.Categories.ToList();
foreach (var c in categories)
product.Categories.Remove(c);

context.SaveChanges();


// To add a new product:
var product = new Product() { Name = "Cool product", Code = "4&meridians", price = 5.0 };

context.Products.Add(product);
context.SaveChanges();

要向新产品添加类别,请在SaveChanges调用之前执行此操作:

product.Categories.Add(new Category(){ Name = "cool category", Code = "rf7)425" });