In Entity Framework, relationships between classes reflect how the table structure will be in the relational database.
Table relationships are a fundamental part of relational databases (that’s why they are called “relational” 😊). They allow organizing and structuring information.
In Entity Framework, table relationships are represented as relationships between entities.
Just like their database counterparts, we can have three fundamental types of relationships:
- One-to-One (1:1): An entity A is related to a single entity B and vice versa.
- One-to-Many (1
): An entity A can be related to many entities B, but an entity B is related to only one A. - Many-to-Many (N
): Many entities A are related to many entities B and vice versa.
Let’s review each of them, and we will explore them in depth in their respective tutorial 👇.
One-to-One Relationship (1:1)
A one-to-one relationship occurs when a row in one table is related to only one row in another table.
- User - Profile (each user has a unique profile).
- Employee - Computer (each employee has a unique computer).
- Passport - Person (each passport belongs to a single person).
We see it in the entry
One-to-Many Relationship (1 )
A one-to-many relationship occurs when
- An entity A can have many instances of an entity B
- But each instance of B is related to only one A
This is the most common type of relationship in databases.
- Publisher → Books (a publisher can publish many books, a book has only one publisher)
- Department → Employees (a department has many employees, an employee has one unique department)
- Customer → Orders (a customer places many orders, an order has one unique customer)
We see it in the entry
Many-to-Many Relationship (N )
A many-to-many relationship occurs when,
- Multiple entities of class A can be associated with multiple entities of class B
- Multiple entities of class A can be associated with multiple entities of class A
This type of relationship is more complex due to the need for an intermediate table to store the associations.
- Students ←→ Courses (a student takes many courses, a course has many students)
- Products ←→ Orders (a product appears in many orders, an order contains many products)
- Users ←→ Roles (a user has many roles, a role belongs to many users)
We see it in the entry