EF Core一对多关系配置

本文介绍使用EFCore进行数据库一对多关系配置的方法。通过具体的Comment和Article类实例,展示了如何建立并配置一对多的关系,包括实体定义、配置类编写及数据库操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

复习:数据库表之间的关系:一对一、一对多、多对多

EF Core不仅支持单实体操作,更支持多实体的关系操作。

一、一对多: 关系配置

class Comment
    {
        public long Id { get; set; }

        public string Message { get; set; }

        public Article TheArticle { get; set; }

        public long TheArticleId { get; set; }

    }
class CommentConfig : IEntityTypeConfiguration<Comment>
    {
        public void Configure(EntityTypeBuilder<Comment> builder)
        {
            builder.ToTable("T_Comments");
            builder.Property(a => a.Message).IsUnicode().IsRequired();
            builder.HasOne<Article>(c => c.TheArticle).WithMany(a => a.comments).HasForeignKey(c=>c.TheArticleId).IsRequired();                //TheArticle是属性 
            
        }
    }
  1. 把关系配置到Comment这个实体上

  1. 一个Comment有一个Article实体

  1. Comment中的TheArticle属性对应一个Article实体

  1. Article实体中的Comments对应多个Comment

查看外键关系 、、、、EFcore自动外键行为

  • 在一对多的关系中 在多的 建立指向一的外键关系

EF Core中实体之间关系的配置的套路:HasXXX(...).WithXXX(...);一对多: HasOne(...).WithMany(...);

一对一: HasOne(...).WithOne (...);

多对多: HasMany (...).WithMany(...);

Artcle.cs

class Article
    {
        public long Id { get; set; }
        public string Title { get; set; }
        public string Message { get; set; }

        public List<Comment> comments { get; set; } = new List<Comment>();  //建议给个空的List

    }

ArtcleConfig.cs

class ArticleConfig : IEntityTypeConfiguration<Article>
    {
        public void Configure(EntityTypeBuilder<Article> builder)
        {
            builder.ToTable("T_Articles");
            builder.Property(a => a.Title).HasMaxLength(100).IsUnicode().IsRequired();
            builder.Property(a => a.Message).IsUnicode().IsRequired();

        }
    }

配置到Article这一个实体上

然后创建数据库

往这两个表中加入一些数据

一对多过程:

1.先声明一的对象,并且在一的类中把多的list建好
2.在多的类中声明好父亲
3.在多的类配置文件中配置好// 我有一个文章 文章有多个评论

插入数据:

  1. 创建一个对象

  1. 创建它的子对象

  1. 把子对象加入到父对象中去

  1. 把父对象加入到Dbcontext中去

  1. SaveChanges保存

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值