• 外键约束
    • 惯例
    • 数据注解
    • 流式 API

    外键约束

    注意

    当前章节中涉及的配置一般适用于关系数据库。这里展示的扩展方法在你安装了关系数据库提供程序之后就能获得(由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. }