Este repositório demonstra as diferentes abordagens de herança utilizadas no Entity Framework Core: Table Per Hierarchy (TPH), Table Per Type (TPT) e Table Per Concrete class (TPC). Cada abordagem tem suas próprias características e é adequada para diferentes cenários.
Na abordagem TPH, todas as classes na hierarquia de herança são mapeadas para uma única tabela. A tabela possui uma coluna discriminadora para diferenciar entre os tipos.
Column | Type | Notas |
---|---|---|
Id | int | Chave Primária |
Model | string | |
Year | int | |
Type | string | Discriminador (Car, Motorcycle) |
NumberOfDoors | int | NULL para motocicletas |
HasFairing | boolean | NULL para carros |
A abordagem TPT mapeia cada classe na hierarquia de herança para sua própria tabela, com cada classe derivada tendo sua própria chave primária e uma chave estrangeira referenciando a tabela da classe base.
Column | Type | Notas |
---|---|---|
Id | int | Chave Primária |
Model | string | |
Year | int |
Column | Type | Notas |
---|---|---|
Id | int | Chave Primária |
VehicleId | int | Chave Estrangeira para Vehicles |
NumberOfDoors | int |
Column | Type | Notas |
---|---|---|
Id | int | Chave Primária |
VehicleId | int | Chave Estrangeira para Vehicles |
HasFairing | boolean |
Na abordagem TPC, cada classe concreta na hierarquia de herança é mapeada para sua própria tabela, e a classe base não é representada.
Column | Type | Notas |
---|---|---|
Id | int | Chave Primária |
Model | string | |
Year | int | |
NumberOfDoors | int |
Column | Type | Notas |
---|---|---|
Id | int | Chave Primária |
Model | string | |
Year | int | |
HasFairing | boolean |
Para mais informações sobre como implementar cada uma dessas abordagens no Entity Framework Core, consulte a documentação oficial.
This repository demonstrates the different inheritance approaches used in Entity Framework Core: Table Per Hierarchy (TPH), Table Per Type (TPT), and Table Per Concrete class (TPC). Each approach has its own characteristics and is suitable for different scenarios.
In the TPH approach, all classes in the inheritance hierarchy are mapped to a single table. The table has a discriminator column to differentiate between the types.
Column | Type | Notes |
---|---|---|
Id | int | Primary Key |
Model | string | |
Year | int | |
Type | string | Discriminator (Car, Motorcycle) |
NumberOfDoors | int | NULL for motorcycles |
HasFairing | boolean | NULL for cars |
The TPT approach maps each class in the inheritance hierarchy to its own table, with each derived class having its own primary key and a foreign key referencing the base class table.
Column | Type | Notes |
---|---|---|
Id | int | Primary Key |
Model | string | |
Year | int |
Column | Type | Notes |
---|---|---|
Id | int | Primary Key |
VehicleId | int | Foreign Key to Vehicles |
NumberOfDoors | int |
Column | Type | Notes |
---|---|---|
Id | int | Primary Key |
VehicleId | int | Foreign Key to Vehicles |
HasFairing | boolean |
In the TPC approach, each concrete class in the inheritance hierarchy is mapped to its own table, and the base class is not represented.
Column | Type | Notes |
---|---|---|
Id | int | Primary Key |
Model | string | |
Year | int | |
NumberOfDoors | int |
Column | Type | Notes |
---|---|---|
Id | int | Primary Key |
Model | string | |
Year | int | |
HasFairing | boolean |
For more information on how to implement each of these approaches in Entity Framework Core, consult the official documentation.