C#C
C#11mo ago
Faker

✅ Do we need to explicitly set foreign keys in EF Core?

Hello guys, just a quick question. Say I want to implement the following table which contains 2 foreign keys. Can EF Core automatically infer that the MemberId and BookId are foreign key (Assume we add navigation property in each table where needed)?

C#
namespace Week5.Models;

public class Lending
{
    public int LendingId { get; set; }
    public DateTime IssueDate { get; set; }
    public DateTime DueDate { get; set; }
    public DateTime ReturnDate { get; set; }
    
    // Foreign keys
    public int MemberId { get; set; }
    public int BookId { get; set; }
    
    // Navigation property - one lending can have one member; one lending can have one book;
    public Books? Book { get; set; }
    public Member? Member { get; set; }
    
}

C#
  protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        // Book - Lending : One to Many
        modelBuilder.Entity<Books>()
            .HasMany(b => b.Lendings)
            .WithOne(l => l.Book)
            .HasForeignKey(l => l.BookId);
        
        // Member - Lending : One to Many
        modelBuilder.Entity<Member>()
            .HasMany(m => m.Lendings)
            .WithOne(l => l.Member)
            .HasForeignKey(l => l.MemberId);
        
    }
Was this page helpful?