Dishant Arora Ответов: 1

Как включить внешние ключи в функцию savechanges в EF


Привет,

У меня есть две таблицы: одна-продукт, а вторая-теги. У них есть свои колонки. Существует отношение "один ко многим" между продуктом и тегами. Один продукт может иметь несколько тегов(Это должно быть сделано с помощью базы данных, без Javascript) Итак,я включил ключ продукта в качестве внешнего ключа в таблицу тегов. Я могу создать структуру модели в Entity framework, используя подход code first.

Вопрос: Есть два поля формы для включения тегов от пользователя. Один-это версия продукта, а другой-название тега. Где в качестве модели метки содержат идентификатор(сгенерированный базой данных), версия, Название, удаление объекта, продукта и productid в качестве внешнего ключа.

Когда я получаю данные от формы к контроллеру, он застревает в db. SaveChanges (). Я говорю
The INSERT statement conflicted with the FOREIGN KEY constraint

Как я могу включить внешние ключи в объект тегов, чтобы EF сохранил изменения?

Что я уже пробовал:

Я думаю о том, чтобы получить идентификатор продукта отдельно, а затем включить его в объект тегов, который затем добавит в объект контекста для сохранения изменений, но это маловероятно. Есть ли лучший способ сделать это?

1 Ответов

Рейтинг:
0

Andy Lanng

Это звучит так, как будто у вас на самом деле есть отношения "многие ко многим". Для этого требуется таблица ссылок, содержащая внешний ключ как для продуктов, так и для тегов. Каждый продукт может быть вставлен без ограничений, и каждый "новый" тег может быть вставлен без ограничений. когда вы знаете, какие теги должны быть подключены к какому продукту, вы вставляете новую связь в таблицу ссылок.

Если это не так, то вам придется вставить каждый продукт, прежде чем вы сможете вставить теги.

Надеюсь, это поможет. Если я что-то пропустил, дайте мне знать ^_^
Энди


Dishant Arora

Я уверен, что построил отношения "один ко многим". Третьей соединительной таблицы нет. Да, сначала будет вставлен продукт, а затем теги, связанные с продуктом. Есть проблема, продукт уже добавлен,и когда пользователь добавит новый тег, то как я сделаю отношение один ко многим. При отправке формы модель не содержит внешнего ключа. Я что-то здесь упускаю?

Andy Lanng

"Мне здесь чего-то не хватает", - тоже мне...
Таким образом, в таблице тегов есть столбец productid. Это внешний ключ. Идентификатор продукта должен существовать в таблице products.
Вы вставляете продукт, получаете вставленный идентификатор продукта и включаете его в теги для вставки.
Если вы выполните эти шаги, то вы не получите ошибку. Чего тебе не хватает?
Может быть, выложить свой код?