Как удалить, а затем добавить дочерние элементы в LINQ to SQL - PullRequest
7 голосов
/ 11 марта 2009

У меня есть серия дочерних элементов таблицы, которую я не хочу удалять, а затем добавляю новые.
Меня не волнует производительность, потому что это не частая операция.

Как мне это сделать? Я пробовал 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 ]

15 голосов
/ 11 марта 2009

Пока вы удаляете все предметы, которые вы также можете использовать

db.OrderItems.DeleteAllOnSubmit(o.Items);
3 голосов
/ 11 марта 2009

Неважно, я нашел решение (но не знаю, является ли оно лучшим)

For Each oItem As OrderItem In o.Items
    db.OrderItems.DeleteOnSubmit(oItem)
Next
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...