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;

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

 

分享给朋友:
您可能感兴趣的文章:
随机阅读: