Как я могу вручную добавить составную ассоциацию в структуру сущностей?

Это кажется обычным случаем, но по какой-то причине я загнан в угол из-за слабого редактора EF.

У меня есть две таблицы, вот так:

Table1
(
Column1 int, PK
Column2 int, PK
)

Table2
(
Column1 int, PK, FK
Column2 int, PK, FK
Column3 int, PK
)

Теперь база данных (вне нашего контроля) не имеет ограничений внешнего ключа. В этом примере предполагается, что Table2 имеет ограничение внешнего ключа, которое ссылается на Table1 на (Column1, Column2). Другими словами, первые два столбца Table2 ссылаются на первичный ключ из Table1. Это обычная проблема любой обычной базы данных.

В других фреймворках, таких как LLBLGenPro, мы можем вручную добавить отношение очень тривиальным образом. Однако мы не можем понять, как этого добиться в редакторе EF. Это окно «Сведения о картировании» ужасно и не интуитивно понятно. До сих пор нам удавалось выбрать различные таблицы в сопоставлении, но, похоже, всегда требуется связать все столбцы.

Есть идеи или ссылки?

Ответов (3)

  1. Щелкните правой кнопкой мыши заголовок объекта Table1 и выберите добавить ассоциацию.
  2. Выберите Table2 с правой стороны. (Установите любые другие свойства в этом мастере)
  3. Дважды щелкните вновь созданную связь и установите свойства
  1. Создайте «временные» таблицы с такими же столбцами, но с правильными FK. Используйте резервную копию БД, если вы не можете изменить «настоящую». Не трудитесь отображать таблицы без FK. Это может быть проще всего, если вы используете новую модель, поскольку удаление в дизайнере не удаляет сопоставления магазинов.
  2. Сопоставьте их с мастером.
  3. Откройте EDMX как XML (не в дизайнере)
  4. Найдите и замените имена таблиц, используя таблицы, которые вы действительно хотите сопоставить.
  5. Отбросьте "временные" таблицы.

Общий совет: редактируйте EDMX вручную, когда делаете нестандартные вещи. Нет ФК = нестандартно. Дизайнер графического интерфейса обрабатывает только определенные случаи.

Предполагая, что у вас есть две сущности.

  1. Щелкните правой кнопкой мыши заголовок объекта Table1 и выберите добавить ассоциацию.
  2. Выберите Table2 с правой стороны. (Установите любые другие свойства в этом мастере)
  3. Выберите вновь созданную ассоциацию и отредактируйте сопоставление. (Должно быть уже выбрано)
  4. В окне "Сведения о сопоставлении" выберите "Таблица2".

Так и должно быть.