Удаление объекта с отношением внешнего ключа без удаления ссылочного объекта - PullRequest
0 голосов
/ 23 мая 2018

Моя проблема связана с общим «Удалить» в BidController. Я получаю типичную ошибку:

Оператор DELETE конфликтует с ограничением REFERENCE «fkw _....».Конфликт произошел в таблице базы данных ..., столбце .... Оператор был прерван.

Большое спасибо за любую помощь.

Ответы [ 3 ]

0 голосов
/ 23 мая 2018

Попробуйте обновить ActiveBidId, указав нулевое значение, а затем удалите ставки. Таким образом, вы разрываете связь между Предметом и Заявкой и можете удалить Данные из Ставок.

0 голосов
/ 23 мая 2018

Очевидно, что я могу установить GUID на ноль, поэтому я публикую простой ответ.

В моем BidController я обновил свой код:

        item = null;

Это удаляет ссылкук ставке, поэтому ставки можно бесплатно удалить!

0 голосов
/ 23 мая 2018

Попробуйте сделать отношения как ОПЦИОНАЛЬНЫЕ.Таким образом, ваши элементы могут иметь нулевые внешние ключи.

Если вы используете первый подход к базе данных:

CREATE TABLE Item(
    ItemId INT PRIMARY KEY,
    ActiveBidId INT NULL FOREIGN KEY REFERENCES Bid(BidId)
    // ...
  );

Если вы уже создали таблицу, то вы можете изменить свою таблицу следующим образом:

ALTER TABLE Item 
DROP CONSTRAINT FK_ActiveBidConstraint -- The name of your  constraint
GO

ALTER TABLE Item
ADD CONSTRAINT FK_ActiveBidConstraint FOREIGN KEY (ActiveBidId) -- The name of your  constraint
    REFERENCES Bid(BidId);
...