2014-12-29 169 views
0

我有兩個表的產品和訂購由於某種原因,我只是想幾個記錄來和坐在Orders表 我有以下代碼究竟如何InsertAllOnSubmit工作在LINQ的

public ActionResult Order() 
    {   
     List<Product> products=TempData["products"] as List<Product>; 
     List<Order> orders = new List<Order>(); 
     Order order = new Order(); 
     foreach (var item in products) 
     { 
      order.Customer_Id = 1; 
      order.Product_Name = item.Model_Name; 
      order.Amount = item.Price; 
      order.Order_Date = DateTime.Now.ToLocalTime(); 
      orders.Add(order); 
     }     
     db.Orders.InsertAllOnSubmit(orders);    
     db.SaveChanges(); 
     return View(products); 
    } 

我只是想知道它是如何工作發現一些東西在線,但無法理解它是如何工作的。任何人都可以看得出它是如何工作的NAD如何應用它在上面的代碼

+0

當您調用db.SaveChanges()時,會發生數據庫插入操作。在此之前,它們只存在於你的環境中。 (在應用程序內存中) –

+0

@IsThatSo但是如何使用InsertAllOnSubmit(orders)插入它們以及如何實現此方法。 – User

+0

將'Order order = new Order();'移到循環的內部。因爲它現在在循環之外,所以你不能**在循環中插入新的元素,而是修改相同的元素。 –

回答

1

我不知道爲什麼它不能編譯,根據你的問題,你下可能粘貼一些其他代碼的討論,但是這絕對應該工作:

public ActionResult Order() 
{   
    List<Product> products=TempData["products"] as List<Product>; 

    foreach (var item in products) 
    { 
     Order order = new Order(); 
     order.Customer_Id = 1; 
     order.Product_Name = item.Model_Name; 
     order.Amount = item.Price; 
     order.Order_Date = DateTime.Now.ToLocalTime(); 
     db.Orders.Add(order); 
    }     

    db.SaveChanges(); 
    return View(products); 
} 

編輯:請注意,因爲你正在呼籲SaveChanges,而不是SubmitChanges那麼最可能是你沒有使用 LINQ2SQL而是實體框架和你只是在混淆這兩個!

InsertAllOnSubmit不EF實現,你只需要使用代碼我上面建議。