• EF 下的code fist 模式编程


    EF 分两种模式 codefirst(就是不知道数据是啥,也没有数据库)  和 database fist (数据已经设计好了)

    首先打开vs  新建一个项目 创建一个控制台程序

    然后 新建一个Teacher 类 

        public class Teacher
        {
            public int TeacherId { get; set; }
            public string Name { get; set; }
            public string Country { get; set; }
            public string Description { get; set; }
            public List<Student> Students { get; set; }//一个老师有多个学生,同下说明
            //一个老师有多个教程,这里EF会自动设置外键到对应的Course 表 
            //注意course这个表要写 public Teacher Teacher { get; set; } 这样才能对应
            public List<Course> Courses { get; set; }
        }

    然后新建一个Student类  这里Teacher类和 Student 是1:M的关系(一对多)

      public class Student
        {
            public int StudentId { get; set; }
            public string Name { get; set; }
            public string Owner { get; set; }
            public Teacher Teacher { get; set; }//一个学生对应一个老师(这里也可以多个老师)可以自己写
    
            public IList<Course> Courses { get; set; }//一个学生多门课
        }

    同时新建一个Course  课程类 这里 每个学生,每个老师都有自己的课

     public  class Course
        {
            public int CourseId { get; set; }
            public string Name { get; set; }
            public Student Student { get; set; }
            public Teacher Teacher { get; set; }
        }

    等表建好了以后我们要进行往数据库插入数据了,这里需要EF的实体DefaultContext 需要继承  DbContext 这个父类

    对应的表写在下面

        class DefaultContext : DbContext
        {
            public DbSet<Teacher> Teachers { get; set; }
            public DbSet<Student> Students { get; set; }
            public DbSet<Course> Courses { get; set; }
            
        }

    现在万事具备之前实现,现在我们在Program.cs中实现如下代码

     for (int i = 11; i < 21; i++)
                {
                    var d = DateTime.Now.Date.ToString("yyyyMM");
                    var destination = new Teacher
                    {
                        Country = "Indonesia" + i.ToString(),
                        Description = "EcoTourism at its best in exquisite Bali",
                        Name = "Bali"
                    };
                    var student = new Student
                    {
                        Name = "Indonesia" + i.ToString(),
                        Teacher = destination
                    };
                    var couse = new Course
                    {
                        Name = "Indonesia" + i.ToString(),
                        Student = student,
                        Teacher = destination
                    };
                    using (var context = new DefaultContext())
                    {
                        context.Teachers.Add(destination);
                        context.Students.Add(student);
                        context.Courses.Add(couse);
                        context.SaveChanges();
                    }
                }

    此刻打开你的sqlserver  如下所示:

    找到 DefaultContext  查看数据是否导入成功

     这样热腾腾的三个表就进去啦,这就是 EF的code first  ,相关的表的外键会自动创建

    相关查询可以用如下代码

    IList<Teacher> c2 = context.Teachers.AsNoTracking().Include("Students").Include("Courses").ToList();
    IList<Teacher> c = context.Teachers.AsNoTracking().Include("Students").ToList();

    注意引入 using System.Data.Entity;

    不懂的可以咨询我,微信如下:

  • 相关阅读:
    名字空间,L,E, G , B 作用域, 内置电池
    lambda表达式
    表达式与声明的区别。
    jupyter book的使用
    centos7一键安装cacti_1.2.16版本
    docker修改阿里云镜像加速器
    centos单网卡多ip,被动模式
    centos同步时间
    centos7.x制作bond
    centos 6.X制作bond
  • 原文地址:https://www.cnblogs.com/huchaoheng/p/6274744.html
Copyright © 2020-2023  润新知