Циклы или несколько каскадных путей SQL Server - PullRequest
0 голосов
/ 11 октября 2019

Я использую dotnet и mvc в этом проекте.

В моей модели данных есть несколько каскадных путей, и в результате я получаю ошибку в названии. Это происходит, когда я пытаюсь добавить FK из таблицы Orders в таблицу Business.

Моя модель данных:

  • Пользователь (UserId pk, ...)
  • Business (BusinessId pk, владелец fk для пользователя (UserId), ...)
  • Provider (ProviderId fk для пользователя (UserId), ....)
  • Order (OrderId pk, BusinessId fk to Business (BusinessId), ProviderId fk to Provider (ProviderId), CustomerId fk to User (UserId)).

Например, предположим, у меня есть веб-платформа, котораяможет управлять несколькими парикмахерскими. Каждый парикмахерский магазин - это бизнес в моей базе данных. Пользователь на моем сайте может быть клиентом (Пользователь), владельцем парикмахерской (Владелец бизнеса) и парикмахером (Провайдер).

Теперь, как вы понимаете, существует множество путей от таблицы пользователя дотаблица заказов.

FK от Заказа к Провайдеру установлен на удаление при установке на ноль. Тем не менее, поскольку у нас есть FK to Business (у которого есть владелец, подключенный к пользователю), я все еще застрял.

Ошибка:

Не удалось выполнить команду DbCommand (16ms) [Параметры= [], CommandType = 'Text', CommandTimeout = '30 ']
CREATE TABLE [Порядок]
....);

Введение ограничения FOREIGN KEY 'FK_Order_Business_BusinessId' в таблице 'Order' может привести к возникновению циклов или нескольких каскадных путей. Укажите ON DELETE NO ACTION или ON UPDATE NO ACTION или измените другие ограничения FOREIGN KEY.

Не удалось создать ограничение или индекс. См. Предыдущие ошибки.

Ищите решение на уровне dotnet, например, обновление моделей или файла миграции. Я слышал о триггерах, но не уверен, как реализовать это через asp.

Необязательно: Идея, о которой я подумал: разделить таблицу заказов на 3 таблицы: Заказы (Orderid pk, timestamp) CustomersOrder (Order_id fk, customer_Id) BusinessOrder (Orderid fk, businessID, ProviderId)

Я был бы счастливчтобы услышать идеи, если у вас, ребята, есть:)

1 Ответ

0 голосов
/ 12 октября 2019

Я думаю, у меня не было никакой другой опции, я разделил модель заказа на 3 модели: Заказы, CustomerOrder, BusinessOrder = 3 таблицы.

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