2017-04-04 12 views
0

ヌル参照エラーなしでリスト全体またはループ全体をどのようにアタッチできますか?エンティティは既存のIDを使用する代わりに新しいIDを追加します

エンティティクラス

私はカテゴリーを添付しようとした

CheckBoxListの

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

から

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

リストの追加新製品 - のコメントを参照

 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 "System.Collections.Generic.IList " "System.Collections.Generic.IListを変換できません" –

+0

実際の問題が何であるかわからないです。タイトルは、EFが既存のオブジェクトの代わりに新しいオブジェクトを作成したことを示しています。しかし、後で、参照エラーなしで新しいオブジェクトを一括して作成する方法を尋ねます。あなたの質問は私には分かりません。あなたは精緻化できますか? – sbecker

答えて

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

ここにコードを説明してください。 – Deep

+0

変数が正しくありません。私の答えを編集しました。 –

関連する問題