ADO.Net EF – como definir a relação de chave estrangeira na primeira abordagem do modelo?

Eu tenho tido problemas anteriores em relação à inheritance de classs e estruturação de um database em torno disso e usando a estrutura de entidade para nenhum sucesso. Então eu tentei criar as entidades dentro do Visual Studio e ver quais tabelas de database ele cria automaticamente.

Eu tenho um Entity MediaItem que é abstrato e Game Inherits disso. O jogo tem um console (Int) que corresponde ao ConsoleID. No entanto, quando eu gero o database, recebo uma coluna extra indesejada (ConsoleTypes_ConsoleID) dentro da tabela MediaItems_Game. Por que isso e como posso evitar que isso aconteça? Obrigado.

insira a descrição da imagem aqui

Primeiro de tudo, seu modelo provavelmente está errado. ConsoleType e Game não estão em uma relação de um para um (a menos que você tenha um único jogo para cada tipo de console). Espero que um console possa ter vários jogos. Por isso deve ser um-para-muitos. Na realidade, o jogo pode ser lançado em várias plataformas, por isso deve ser muitos-para-muitos.

Você obteve uma coluna não vantajosa porque sua relação entre ConsoleType e Game não sabe que deve usar a propriedade Console como uma chave estrangeira. Isso acontece se você usar associação independente. Associações independentes são usadas por padrão quando você as desenha de uma entidade para outra entidade no designer de entidades. Você deve usar associação de chave estrangeira.

Comece com essa configuração (associe a associação do ConsoleType ao Game – você deve ter uma relação um para muitos):

insira a descrição da imagem aqui

Selecione a relação entre as propriedades ConsoleType e Game e clique em Restrição Referencial :

insira a descrição da imagem aqui

Na checkbox de diálogo Restrição referencial, apenas configure a relação:

insira a descrição da imagem aqui

Salve seu modelo e gere o database novamente.