✅ 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#
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);
}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);
}