2017-04-04 49 views
0

如何在無空引用錯誤的情況下附加整個列表或循環?實體使用現有的ID添加新的ID

實體類

public class Product 
    { 
     [Key] 
     public int Product_Id { get; set; } 
     public string Product_Name { get; set; } 
     public IList<Category> Categories { get; set; }  
    } 

public class Category 
    { 
     [Key] 
     public int Category_ID { get; set; } 
     public string Category_Name { get; set; } 
     public IList<Product> Products { get; set; } 
    } 

從CheckBoxList的

IList<ListItem> prodCat = new List<ListItem>(); 
    foreach (ListItem item in cblCategory.Items) 
    { 
     if (item.Selected) 
     { 
      prodCat.Add(item); 
     } 
    } 

列表添加新產品

我試圖附加類別 - 見註釋

 public void AddProduct(string prodName, IList<ListItem> prodCat) 
    { 
     ProductDBContext productDBContext = new ProductDBContext(); 
     Product prodNew = new Product(); 
     prodNew.Product_Name = prodName; 

     List<Category> categList = new List<Category>(); 
     foreach (ListItem item in prodCat) 
     { 
      Category categObj = new Category 
      { 
       Category_Name = item.Text, 
       Category_ID = Convert.ToInt32(item.Value) 
      }; 
      categList.Add(categObj); 
      // prodNew.Categories.Add(categObj); //Null reference 
     } 
     prodNew.Categories = categList; 
     productDBContext.Products.Add(prodNew); 
     productDBContext.SaveChanges(); 
    } 
+0

'添加帶錯誤消息的新產品'錯誤消息說什麼? –

+0

無法轉換類型System.Collections.Generic.IList 「on」System.Collections.Generic.IList 「 –

+0

我不是100%確定你的實際問題是。標題指出EF創建了新的對象而不是現有的對象。但稍後您會問如何批量創建新的對象,而無需引用錯誤。看來你的問題並不清楚。你能詳細說明嗎? – sbecker

回答

0
var categories = prodCat 
    .Select(p => new Category 
    { 
     Category_ID = p.Value, 
     Category_Name = p.Text 
    } 
    .ToList(); 
+2

請解釋那裏的代碼。 – Deep

+0

錯誤的變量。編輯我的答案。 –

相關問題