Предпринята попытка присоединить или добавить объект, который не является новой ошибкой Linq to Sql - PullRequest
4 голосов
/ 04 марта 2011

У меня есть функция сохранения для моего объекта заказа, которая выглядит следующим образом, и она разбивается на строке sumbmitChanges:

public void SaveOrder ( Order order ) {
    if (order.OrderId == 0)
        orderTable.InsertOnSubmit(order);
    else if (orderTable.GetOriginalEntityState(order) == null) {
        orderTable.Attach(order);
        orderTable.Context.Refresh(RefreshMode.KeepCurrentValues , order);
    }
    orderTable.Context.SubmitChanges();
}

Объект заказа содержит два других объекта;объект Address и объект кредитной карты.Теперь я хочу, чтобы эти две сущности иногда были нулевыми.

Теперь я догадываюсь, почему это вызывает ошибку, потому что оба эти энтита, которые находятся внутри порядка, равны нулю.Если это так, как я могу вставить новый заказ в базу данных, если обе сущности (Address и creditCard) равны нулю.

Редактировать:

Итак, я удалил объект кредитной карты и адрес объекта на данный момент, но я понял, что является причиной проблемы.В заказе есть коллекция изображений (изображение является сущностью), и он выдает ошибку, потому что (я предполагаю), что я не могу вставить новый заказ с заказом, имеющим кучу изображений, которые уже существуют.Так что я знаю, в чем проблема, но я не знаю, как ее исправить.Любая помощь приветствуется.Спасибо

Ответы [ 2 ]

4 голосов
/ 04 марта 2011

Ваши изображения были взяты из другого DataContext? Пока они исходят из того же DataContext, который вы используете для сохранения вашего заказа, он не должен пытаться добавить их снова.

2 голосов
/ 04 марта 2011

Проблема заключается в том, что адресная и кредитная карты уже известны Linq to SQL, однако, когда вы говорите, чтобы вставить заказ (который содержит адрес и кредитную карту), Linq to SQL попытается вставить эти два объекта тоже (этоделает это для всего Графа).

Я полагаю, вам нужно либо: а) убедиться, что вы не присоединяете существующие объекты к новому, либо б) сначала вставить новую сущность, а затем подключитьдо вашей ассоциации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...