如何使用Fluent API指定外键所指的主体实体?
How to specify the principal entity to which the foreign key refers using the Fluent API?
如何使用Fluent指定外键所指的主体实体API?
我正在通过 here 的教程学习 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
实体。 IE。例如,如果我希望 AuthorFK
成为不同于 Author
实体的实体的外键,我该怎么做?
没想到教程居然错了。正确的方法是:
modelBuilder.Entity<Book>()
.HasOne(e => e.Author)
.WithMany()
.HasForeignKey(e => e.AuthorFK);
显示的方法 (modelBuilder.Entity<Book>().HasForeignKey
) 不存在。
我想当你看到这个时,一切都会有意义。
如何使用Fluent指定外键所指的主体实体API?
我正在通过 here 的教程学习 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
实体。 IE。例如,如果我希望 AuthorFK
成为不同于 Author
实体的实体的外键,我该怎么做?
没想到教程居然错了。正确的方法是:
modelBuilder.Entity<Book>()
.HasOne(e => e.Author)
.WithMany()
.HasForeignKey(e => e.AuthorFK);
显示的方法 (modelBuilder.Entity<Book>().HasForeignKey
) 不存在。
我想当你看到这个时,一切都会有意义。