Como é que o Entity Framework implementa o mapeamento de classes herdadas de C# na estrutura de tabelas da base de dados?
sobes.tech IA
Resposta da IA
O Entity Framework suporta várias estratégias de mapeamento de herança de classes C# para tabelas de banco de dados:
-
Table Per Hierarchy (TPH) — todas as classes e suas propriedades são armazenadas em uma única tabela com uma coluna adicional de discriminador que indica o tipo do objeto.
-
Table Per Type (TPT) — para cada classe, uma tabela separada é criada, onde as tabelas dos herdeiros contêm apenas campos adicionais, e a relação com a classe base é feita através de uma chave estrangeira.
-
Table Per Concrete Class (TPC) — para cada classe concreta, uma tabela separada é criada, contendo todos os campos, incluindo os herdados.
Exemplo TPH:
public abstract class Animal { public int Id { get; set; } public string Name { get; set; } }
public class Cat : Animal { public int Lives { get; set; } }
public class Dog : Animal { public string Breed { get; set; } }
// No banco de dados haverá uma tabela chamada Animals com colunas Id, Name, Lives, Breed e Discriminator
A escolha da estratégia depende dos requisitos de desempenho e da estrutura dos dados.