EF 中 一对多,多对多之间的配置

1:一对多配置
student表中ClassId 是 Class表的Id

 public class StudentEF
    {
        public int Id { set; get; }

        public string SName { set; get; }

        public  int ClassId { get; set; }
        
        
       //最好对应 ClassId 去掉Id就是Class 最好对应上
       //默认的约定是外键就是ClassId,关联属性就是外键的名字去掉Id----class
        public virtual ClassEF Class { set; get; }


    }

 public class ClassEF
    {
        public int Id { get; set; }

        public  string ClassName { set; get; }
    }

2:多对多的关系配置

 public class StudentEF
    {
        public int Id { set; get; }

        public string Sname { set; get; }

        public virtual ICollection<TeacherEF> Teas { set; get; } =new  List<TeacherEF>();
    }


 public class TeacherEF
    {
        public int Id { set; get; }

        public string TName { set; get; }

        public virtual ICollection<StudentEF> Stus { set; get; } = new List<StudentEF>();
    }

 public class TeacherConfig:EntityTypeConfiguration<TeacherEF>
    {
        public TeacherConfig()
        {
            ToTable("Tb_Teacher");
            this.Property(m => m.TName).HasMaxLength(20);// 配置长度为20
            this.HasMany(m => m.Stus).WithMany(m => m.Teas).Map(m => m.ToTable("Tb_Relation").MapLeftKey("Tid").MapRightKey("Sid")); // 配置多对多的中间关系表,老师里面有好多学生,学生里面有好多老师,中间表用Tb_Relation,里面有两个列Sid,,Tid

        }
    }



--调用
public class HomeController : Controller
    {
        public ActionResult Index()
        {
            using (MyContext db=new MyContext())
            {
                //StudentEF s = new StudentEF();
                //s.Sname = "Tom";
                //db.Students.Add(s);
                //db.SaveChanges();

                //创建两个学生
                StudentEF s1 = new StudentEF() { Sname = "学生1" };
                StudentEF s2 = new StudentEF() { Sname = "学生2" };

                //创建两个老师
                TeacherEF t1 = new TeacherEF() { TName = "老师1" };
                TeacherEF t2 = new TeacherEF() { TName = "老师2" };

                // 给老师1,增加两个学生
                t1.Stus.Add(s1);
                t1.Stus.Add(s2);
                // 给老师2,增加两个学生
                t2.Stus.Add(s1);
                t2.Stus.Add(s2);
                db.Teachers.Add(t1);
                db.Teachers.Add(t2);
                db.SaveChanges();
                
            }
            return View();
        }

       
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值