-1

我已經綁定到類中,但沒有綁定到另一個類中。我無法從Item中調用產品:對象引用未設置爲對象的實例。如何綁定實體框架中的產品和項目?

怎麼了?

如何優化此代碼?

foreach (var xd in excelData) 
{ 
    Product p = new Product { 
     Name = xd.ProductName, 
    }; 

    ctx.Products.Add(p); 
    ctx.SaveChanges(); 

    Item t = new Item { 
     Product=p, 
    }; 

    t.ProductId = t.Product.ProductId; 
    ctx.Items.Add(t); 
    ctx.SaveChanges(); 

    t.Product = ctx.Products.Where(c => c.ProductId == t.ProductId).FirstOrDefault(); 
    ctx.SaveChanges(); 
} 

回答

0

ObjectQuery.Include方法。指定要包含在查詢結果中的相關對象。

ctx.Items.Include("Product").Where(c => c.SupplierId == id).ToList().ForEach(t => 
     { 
      li.Add(new ShortPricesListItem() 
      { 
       Name = t.Product.Name, 
      }); 
     }); 
1

假設你ProducId和項目Id are auto generated you can write this with a single call to SaveChanges`如下

foreach (var xd in excelData) 
{ 
    Product p = new Product { 
     Name = xd.ProductName, 
    }; 

    Item t = new Item { 
     Product=p, 
    }; 

    ctx.Items.Add(t);  
} 

ctx.SaveChanges();