如何使用 Fluent API 指定外键引用的主体实体?
我正在通过此处的教程学习 EF Core。
我遇到了以下示例:
public class Author
{
public int AuthorId { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public ICollection<Book> Books { get; set; }
}
public class Book
{
public int BookId { get; set; }
public string Title { get; set; }
public int AuthorFK { get; set; }
public Author Author { get; set; }
}
public class SampleContext : DbContext
{
public DbSet<Author> Authors { get; set; }
public DbSet<Book> Books { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Book>()
.HasForeignKey(p => p.AuthorFK);
}
}
而且我无法理解 EF Core 如何知道AuthorFK
引用Author
实体。 即,例如,如果我希望AuthorFK
是与Author
实体不同的实体的外键,我该怎么做?
令人惊讶的是,那里的教程是错误的。正确的方法是:
modelBuilder.Entity<Book>()
.HasOne(e => e.Author)
.WithMany()
.HasForeignKey(e => e.AuthorFK);
显示的方法(modelBuilder.Entity<Book>().HasForeignKey
(不存在。
我想当你看到这个时,这一切都会有意义。