How to Implement Database Relationships in Entity Framework
Implementing database relationships in Entity Framework (EF) allows you to define how different tables (entities) relate to each other. This is essential for building structured, relational data models in .NET applications.
✅ Types of Relationships in EF Core
One-to-One
One-to-Many
Many-to-Many
All relationships in EF are defined through:
Navigation properties
Foreign keys
Fluent API or Data Annotations
🧱 1. One-to-Many Relationship Example
(Example: One Author → Many Books)
✅ Models:
csharp
Copy
Edit
public class Author
{
public int AuthorId { get; set; }
public string Name { get; set; }
public List<Book> Books { get; set; } // Navigation property
}
public class Book
{
public int BookId { get; set; }
public string Title { get; set; }
public int AuthorId { get; set; } // Foreign Key
public Author Author { get; set; } // Navigation property
}
🔧 Fluent API (optional but more control):
csharp
Copy
Edit
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Book>()
.HasOne(b => b.Author)
.WithMany(a => a.Books)
.HasForeignKey(b => b.AuthorId);
}
🧱 2. One-to-One Relationship
(Example: One User → One UserProfile)
✅ Models:
csharp
Copy
Edit
public class User
{
public int UserId { get; set; }
public string Email { get; set; }
public UserProfile Profile { get; set; }
}
public class UserProfile
{
public int UserProfileId { get; set; }
public string Bio { get; set; }
public int UserId { get; set; }
public User User { get; set; }
}
🔧 Fluent API:
csharp
Copy
Edit
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<User>()
.HasOne(u => u.Profile)
.WithOne(p => p.User)
.HasForeignKey<UserProfile>(p => p.UserId);
}
🧱 3. Many-to-Many Relationship
(Example: Students ↔ Courses)
✅ EF Core 5+ supports skip navigations (no join entity needed):
csharp
Copy
Edit
public class Student
{
public int StudentId { get; set; }
public string Name { get; set; }
public List<Course> Courses { get; set; }
}
public class Course
{
public int CourseId { get; set; }
public string Title { get; set; }
public List<Student> Students { get; set; }
}
EF will automatically generate a join table (e.g., StudentCourse).
📦 Entity Framework Setup Example
bash
Copy
Edit
dotnet add package Microsoft.EntityFrameworkCore
dotnet add package Microsoft.EntityFrameworkCore.SqlServer
dotnet add package Microsoft.EntityFrameworkCore.Tools
🔧 DbContext Example
csharp
Copy
Edit
public class SchoolContext : DbContext
{
public DbSet<Student> Students { get; set; }
public DbSet<Course> Courses { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder options)
=> options.UseSqlServer("YourConnectionStringHere");
}
🛠️ Tools
Use dotnet ef migrations add InitialCreate to create migration
Use dotnet ef database update to apply changes to your DB
✅ Summary Table
Relationship Type Use Cases Method
One-to-One User ↔ Profile HasOne().WithOne()
One-to-Many Author → Books HasOne().WithMany()
Many-to-Many Students ↔ Courses Use navigation lists only (EF Core 5+)
Learn Full Stack Dot NET Training in Hyderabad
Read More
Database Migrations in Entity Framework Core
Entity Framework Core: The ORM for Full Stack .NET Developers
Working with NoSQL Databases in .NET (MongoDB, Redis)
Setting Up a SQL Server Database in Full Stack .NET Applications
Visit Our Quality Thought Training in Hyderabad
Comments
Post a Comment