2009-03-11 5 views
7

Ich habe eine Reihe von untergeordneten Elementen einer Tabelle, die ich löschen und dann die neuen hinzufügen soll.
Mir ist die Leistung egal, weil es eine nicht häufige Operation ist.So entfernen und fügen Sie untergeordnete Elemente in LINQ zu SQL hinzu

Wie muss ich es tun? Ich habe versucht, Order.items.clear() und Order.Items.Remove(x) aber beide geben mir Ausnahmen

Vereinfachte Code:

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() 

Antwort

15

Solange Sie alle Artikel entfernen, können Sie auch

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

Nevermind, ich habe die Lösung gefunden (aber nicht wissen, ob es die beste ist)

For Each oItem As OrderItem In o.Items 
    db.OrderItems.DeleteOnSubmit(oItem) 
Next 
Verwandte Themen