ADO.Net EF - как определить отношение внешнего ключа в модели первого подхода?
У меня были предыдущие проблемы, касающиеся наследования классов и структурирования базы данных вокруг этого и использования структуры сущностей безуспешно. Поэтому я попытался создать сущности внутри visual studio и посмотреть, какие таблицы базы данных он создает автоматически.
У меня есть Entity MediaItem, который является Abstract и Game Наследует от этого. В игре есть Console (Int), которая соответствует ConsoleID. Однако, когда я генерирую базу данных, я получаю дополнительный нежелательный столбец (ConsoleTypes_ConsoleID) внутри таблицы MediaItems_Game. Почему это так и как я могу предотвратить это? Благодарю.
1 ответ
Прежде всего, ваша модель, вероятно, не так. ConsoleType
а также Game
не имеет отношения один-к-одному (если у вас нет отдельной игры для каждого типа консоли). Я ожидаю, что 1 консоль может иметь несколько игр. Так должно быть один ко многим. На самом деле игра может быть выпущена на нескольких платформах, поэтому ее должно быть много-много.
Вы получили ненужную колонку, потому что ваши отношения между ConsoleType
а также Game
не знает, что нужно использовать Console
собственность как внешний ключ. Это происходит, если вы используете независимую ассоциацию. Независимые ассоциации используются по умолчанию, когда вы рисуете их из одного объекта в другой в конструкторе объектов. Вы должны использовать ассоциацию внешнего ключа.
Начните с этой установки ConsoleType
в Game
- Вы должны иметь отношение один ко многим):
Выберите отношение между ConsoleType
а также Game
в свойствах нажмите на ссылку ссылки:
В диалоге Referential Constraint просто установите отношение:
Сохраните вашу модель и снова создайте базу данных.