EF Core一对多

331 阅读1分钟

第一步、创建一个文章实体类和评论实体类

文章类

namespace LcyEfDemo.Core.Models
{
    public class Article
    {
        public int Id { get; set; }
        public string Title { get; set; }
        public string Content { get; set; }
        public List<Comment> Comments { get; set; } = new List<Comment>();

    }
}

评论类

namespace LcyEfDemo.Core.Models
{
    public class Comment
    {
        public int Id { get; set; }
        public Article Article { get; set; }
        public string Content { get; set; }
        public int ArticleId { get; set; }
    }
}

第二步、创建两个实体类的配置类,并在多端建立一对多关系,这里新版本的EF Core不用添加ArticleId的外键关系了

using LcyEfDemo.Core.Models;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;

namespace LcyEfDemo.Core.ModelsConfig
{
    public class CommentConfig : IEntityTypeConfiguration<Comment>
    {
        public void Configure(EntityTypeBuilder<Comment> builder)
        {
            builder.HasOne<Article>(c => c.Article).WithMany(c => c.Comments).IsRequired();
            builder.Property(c => c.Content).HasMaxLength(50).IsUnicode();
        }
    }
}

这里理解了下面一句话就很好理解上面的关系了“我这个实体有一个他,他又有多个我”,用上面的例子举例:Comment有一个Article,Article中有多个Comment,站在这个评论配置类的角度来看,其实就是这个评论对应的一个文章,反之这个文章里面又有多个评论