2009-03-11 10 views
7

Ho una serie di elementi figlio di una tabella, che non desidero eliminare e quindi aggiungere quelli nuovi.
Non mi interessa le prestazioni, perché è un'operazione non frequente.Come rimuovere e quindi aggiungere elementi secondari in LINQ a SQL

Come devo farlo? Ho provato Order.items.clear() e Order.Items.Remove(x) ma entrambi mi danno eccezioni

codice semplificato:

Dim db As New MainDataDataContext 
    dim o as Order = (From Order In db.Orders Where Order.OrderID = OrderID).FirstOrDefault 
    ''//this will return "An attempt was made to remove a 
    ''//relationship between a Order and a OrderItem. 
    ''//However, one of the relationship's foreign keys 
    ''//(Order.OrderID) cannot be set to null." exception 
    o.Items.Clear() 
    ''//and this will return "EntitySet was modified during enumeration." exception 
    For Each oItem As OrderItem In o.Items 
     o.items.Remove(oItem) 
    Next 

    For Each item As ListViewItem In listViewOrderItems.Items 
     If item.ItemType = ListViewItemType.DataItem Then 
      Dim oItem As New OrderItem 
      oItem.OrderID = OrderID 
      oItem.Product = CType(item.FindControl("txtProduct"), TextBox).Text 
      oItem.Quantity = CType(item.FindControl("txtQuantity"), TextBox).Text 
      Order.items.Add(oItem) 
     End If 
    Next 

    db.SubmitChanges() 

risposta

15

Fintanto che rimuovi tutti gli Articoli, puoi usare

db.OrderItems.DeleteAllOnSubmit(o.Items); 
3

Nevermind, ho trovato la soluzione (ma non so se è il migliore)

For Each oItem As OrderItem In o.Items 
    db.OrderItems.DeleteOnSubmit(oItem) 
Next 
Problemi correlati