技术思绪摘录旅行
在日常开发中,经常用到CodeFirst模式进行开发,那么我们需要了解基本的EFCore的使用和其原理,本次系列包括EFCore的迁移、关系描述,主要是以我个人经验向大家讲解,希望学习EFCore的同学们,能一看就知道关系描述应该怎么配置。

比如:
老师表:Teacher
学生表:Student


记住以下几点:
1、多对多关系需要两侧的集合导航属性。 与其他类型的关系一样,它们也可通过约定发现。

public class Teacher
{
    public int Id { get; set; }
 
    public string Name { get; set; }
 
    public ICollection<Student> Students { get; set; }
}
public class Student
{
    public int Id { get; set; }
 
    public string Name { get; set; }
 
    public ICollection<Teacher> Teachers { get; set; }
}

目前都是导航属性,未配置实体外键
学生端设置描述:

builder.HasMany(x => x.Teachers)
            .WithMany(x => x.Students);

老师端设置描述:

builder.HasMany(x => x.Students)
            .WithMany(x => x.Teachers);

生成迁移文件:会自动增加一张关联表

ScreenShot00007.png

var teacher = new Teacher
{
    Name = "李老师",
    Students = new List<Student>
    {
        new Student() { Name = "王同学" },
        new Student() { Name = "张同学" }
    }
};
db.Teachers.Add(teacher);
 
db.SaveChanges();

看效果:

var teachers = db.Teachers.Include(x=>x.Students).ToList();
 
var students = db.Students.Include(x=>x.Teachers).ToList();

ScreenShot00010.png

关系已经建好,并且查询不需要关心关联表

CarsonIT 微信扫码关注公众号 策略、创意、技术

留下您的脚步

 

最近评论

查看更多>>

精选推荐

阅读排行

友情打赏

请打开您的微信,扫一扫