2017-08-17 79 views
0

我有一個模型,如下所示:如何更新EF中有多對多關係的條目?

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; } 
} 

我要更新產品的條目。哪些工作正常,但是如果我編輯沒有分類的產品,我會收到錯誤消息。我怎樣才能添加新的產品有或沒有類別?

如何將多個類別的現有產品更新爲任何類別?

有人可以解釋這是什麼方法?

+0

使類別產品的實體虛擬的。 –

回答

0

也許試試這個。

這是一個產品更新。調用SaveChanges打電話之前

//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(); 

要在類別添加到新的產品做到這一點:

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