.ef core 多对对关系的关联方法

Posted c-supreme

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了.ef core 多对对关系的关联方法相关的知识,希望对你有一定的参考价值。

最近在使用.net core 重构博客是,在使用ef core连表查询时,遇到了一些问题。记录一下。

下面是实体代码

BlogEntity

namespace Blog.Service.Entities
{
    public class BlogEntity:BaseEntity
    {
        public string Title { get; set; }
        public string Content { get; set; }
        public virtual List<BlogLabelEntity> BlogLabels { get; set; } = new List<BlogLabelEntity>();
    }
}

BlogConfig

namespace Blog.Service.EntityConfig
{
    public class BlogConfig : IEntityTypeConfiguration<BlogEntity>
    {
        public void Configure(EntityTypeBuilder<BlogEntity> builder)
        {
            builder.ToTable("T_Blogs");
            builder.HasKey(u => u.Id);
            builder.Property(u => u.Title).HasMaxLength(500).IsRequired();
            builder.Property(u => u.Content).IsRequired();
            
            
        }
    }
}

Label

namespace Blog.Service.Entities
{
    public class LabelEntity:BaseEntity
    {
        public string Title { get; set; }
        public string IconUrl { get; set; }

        public virtual List<BlogLabelEntity> BlogLabels { get; set; } = new List<BlogLabelEntity>();
    }
}

LabelConfig

namespace Blog.Service.EntityConfig
{
    public class LabelConfig : IEntityTypeConfiguration<LabelEntity>
    {
        public void Configure(EntityTypeBuilder<LabelEntity> builder)
        {
            builder.ToTable("T_Labels");
            builder.HasKey(u => u.Id);
            builder.Property(u => u.Title).HasMaxLength(50).IsRequired();
            builder.Property(u => u.IconUrl).HasMaxLength(500);

        }
    }
}

BlogLabelEntity

namespace Blog.Service.Entities
{
    public class BlogLabelEntity:BaseEntity
    {
        public long BlogId { get; set; }
        public virtual BlogEntity Blog { get; set; }
        public long LabelId { get; set; }
        public virtual LabelEntity Label { get; set; }
    }
}

BlogLabelConfig

 

这里需要连接blog和label两个表

以blog为例

blogService.GetAll().Include(u => u.BlogLabels).ThenInclude(bl=>bl.Label)

以上为多对多的关联

以上是关于.ef core 多对对关系的关联方法的主要内容,如果未能解决你的问题,请参考以下文章

如何在 .NET EF Core 中实现自引用多对多关系

EF Core 多对多关系

定义引用同一个表的多对多关系(EF7/core)

EF Core中如何设置数据库表自己与自己的多对多关系

关联映射 ---- Hibernate之多对多关系

EF Core 多对多关系上的 LINQ 查询