Sobes.tech
Junior — Middle

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:

  1. 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.

  2. 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.

  3. 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.