在EFCore中多对多关系的设计数据插入与查询

学生类Student

public class Student
{
public int Id { get; set; }
public string Name { get; set; }
public int Age { get; set; }
public List<Teacher> Teachers { get; set; }=new List<Teacher>();
}

老师类Teacher

public class Teacher
{
public int Id { get; set; }
public string Name { get; set; }
public List<Student> Students { get; set; }=new List<Student>();
}

实体配置类StudetnConfig

public class StudentConfig : IEntityTypeConfiguration<Student>
{
public void Configure(EntityTypeBuilder<Student> builder)
{
builder.ToTable("Student");
builder.HasMany<Teacher>(s =>s.Teachers).WithMany(t => t.Students).UsingEntity(s=>s.ToTable("StudentTeacher"));
}
}

MyDbContext数据上下文类

public DbSet<Student> Students { get; set; }
public DbSet<Teacher> Teachers { get; set; }

数据插入

//添加数据

//多对多
using MyDbContext db = new MyDbContext();
Student s1 = new Student { Name = "S1" ,Age=18 };
Student s2 = new Student { Name = "S2", Age = 19 };
Teacher t1 = new Teacher { Name = "T1" };
Teacher t2 = new Teacher { Name = "T2" };
s1.Teachers.Add(t1);
s1.Teachers.Add(t2);
s2.Teachers.Add(t1);
s2.Teachers.Add(t2);
db.Teachers.Add(t1);
db.Teachers.Add(t2);
db.Students.Add(s1);
db.Students.Add(s2);
db.SaveChanges();

数据查询

var teachers = db.Teachers.Include(t=>t.Students).ToList();
foreach (var t in teachers)
{
Console.WriteLine("老师名字:"+t.Name);
foreach (var s in t.Students)
{
Console.WriteLine("\t学生名字:"+s.Name+"---年龄: "+s.Age);
}
}
Console.WriteLine("Hello, World!");
Console.ReadLine();
posted @   一个人走在路上  阅读(29)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· [翻译] 为什么 Tracebit 用 C# 开发
· 腾讯ima接入deepseek-r1,借用别人脑子用用成真了~
· DeepSeek崛起:程序员“饭碗”被抢,还是职业进化新起点?
· 深度对比:PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· Deepseek官网太卡,教你白嫖阿里云的Deepseek-R1满血版
点击右上角即可分享
微信分享提示