首页 > 代码库 > EF 下的code fist 模式编程

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;

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

技术分享

 

EF 下的code fist 模式编程