首页 > 其他分享 >在EFCore中多对多关系的设计数据插入与查询

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

时间:2024-08-17 21:37:42浏览次数:11  
标签:set Name get 插入 Add Teachers EFCore public 中多

学生类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();

标签:set,Name,get,插入,Add,Teachers,EFCore,public,中多
From: https://www.cnblogs.com/zy8899/p/18365023

相关文章

  • 双向链表 尾节点插入
    importlombok.Data;publicclassT{publicstaticvoidmain(String[]args){DoubleLinkedListlist=newDoubleLinkedList();list.addTail(1);list.addTail(2);list.addTail(3);System.out.println("......
  • EFCore中自引用的实体类设计
    案例:以部门(为主)-----部门下面又分1部、2部、3部等,1部下面又分为1组,2组,3组等这种结构像这样的设计类型应该用自引用来设计下面用用代码来实现://////Departmentclass///publicclassDepartment{//////部门Id///publicintId{get;set;}//////部门名称Nam......
  • laravel 批量插入并在遇到重复键时更新
    /***批量插入并在遇到重复键时更新*@paramarray$values*@returnbool*/publicstaticfunctioninsertOnDuplicate(array$values){if(empty($values)){returntrue;}if(!is_array(reset($values))){$values=[$values];......
  • Mybatis如何动态生成插入的列及批量插入值
    有时会遇到根据特定的情况动态创建表,并对表进行批量插入,对于Mybatis来说,也是非常简单的。先看dao层voidinsertBatch(@Param("tableName")StringtableName,@Param("dbColumns")List<String>dbColumns,@Param("dbValues")List<LinkedHashMap>dbValues);注:这里的值d......
  • 高阶数据结构(Java):AVL树插入机制的探索
    目录1、概念1.1什么是AVL树2.1平衡因子3、AVL树节点的定义4、AVL树的插入机制4.1初步插入节点4.2更新平衡因子4.3 提升右树高度4.3.1右单旋4.3.2左右双旋4.4 提升左树高度4.4.1左单旋 4.4.2右左双旋5、AVL树的验证6、AVL树的删除1、概念1.1什......
  • leetcode面试经典150题- 380. O(1) 时间插入、删除和获取随机元素
     https://leetcode.cn/problems/insert-delete-getrandom-o1/description/?envType=study-plan-v2&envId=top-interview-150gotypeRandomizedSetstruct{isHavemap[int]inttotalintarr[]int}funcConstructor()RandomizedSet{retur......
  • 代码随想录训练营day20|235. 二叉搜索树的最近公共祖先,701.二叉搜索树中的插入操作,450
    二叉搜索树的最近公共祖先题目根据二叉搜索树的特性,它的公共祖先肯定是值夹在p和q之间的(满足此条件的第一个点)TreeNode*getroot(TreeNode*root,TreeNode*p,TreeNode*q){ if(rooot==NULL)returnNULL; if(root->val<p->val&&root->val<q->val){ returngetroot(r......
  • CFD中多孔介质计算及其工程应用
    1.多孔介质模型简介多孔介质模型主要用于模拟某空间内存在固相和气相或(及)液相的区域,以简化计算。简单来说,就是在原来很多细孔,管束,棒束等区域,采用简化模型,用纯流体区域代替这些复杂的区域。2.应用下面综合具体算例及其应用多孔介质的原因,进行分类说明本人见过的采用多孔介......
  • Magic-Api数据库插入操作汇总
    1.测试表准备--id非自增CREATETABLE`test_idms`(`id`varchar(32)CHARACTERSETutf8mb4COLLATEutf8mb4_general_ciNOTNULL,`name`varchar(255)COLLATEutf8mb4_general_ciDEFAULTNULLPRIMARYKEY(`id`))ENGINE=InnoDB;--id自增CREATETABLE......
  • word中插入代码块
    一、使用word原生功能......