如何在LINQ to SQL中删除然后添加子项

时间:2009-03-11 16:33:57

标签: .net linq-to-sql

我有一系列儿童用品,我不想删除,然后添加新的 我不关心性能,因为它不常用。

我该怎么办?我尝试了Order.items.clear()Order.Items.Remove(x),但都给了我例外

简化代码:

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

2 个答案:

答案 0 :(得分:15)

只要您删除所有项目,您也可以使用

db.OrderItems.DeleteAllOnSubmit(o.Items);

答案 1 :(得分:3)

没关系,我找到了解决方案(但不知道它是否是最好的)

For Each oItem As OrderItem In o.Items
    db.OrderItems.DeleteOnSubmit(oItem)
Next
相关问题