標籤:實體 rip include one log div system uri teacher
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 模式編程