外键约束

注意

当前章节中涉及的配置一般适用于关系数据库。这里展示的扩展方法在你安装了关系数据库提供程序之后就能获得(由Microsoft.EntityFrmeworkCore.Relational 程序包共享)。

外键约束是为模型中的关系引入的。

惯例

按照惯例,外键约束命名为 FK_<依赖实体类型名称>_<主实体类型名称>_<外键属性名称>。对于组合键,<外键属性名> 则为用下划线分隔的外键属性名。

数据注解

不能使用数据注解配置外键约束。

流式 API

可以使用流式 API 来来为模型中的关系配置外键约束的名称。

  1. class MyContext : DbContext
  2. {
  3. public DbSet<Blog> Blogs { get; set; }
  4. public DbSet<Post> Posts { get; set; }
  5. protected override void OnModelCreating(ModelBuilder modelBuilder)
  6. {
  7. modelBuilder.Entity<Post>()
  8. .HasOne(p => p.Blog)
  9. .WithMany(b => b.Posts)
  10. .HasForeignKey(p => p.BlogId)
  11. .HasConstraintName("ForeignKey_Post_Blog");
  12. }
  13. }
  14. public class Blog
  15. {
  16. public int BlogId { get; set; }
  17. public string Url { get; set; }
  18. public List<Post> Posts { get; set; }
  19. }
  20. public class Post
  21. {
  22. public int PostId { get; set; }
  23. public string Title { get; set; }
  24. public string Content { get; set; }
  25. public int BlogId { get; set; }
  26. public Blog Blog { get; set; }
  27. }