原文連結:http://www.entityframeworktutorial.net/code-first/simple-code-first-example.aspx
在前面一節中,我們學會了怎麼,在我們項目中安裝Entity Framework。現在我們來建立一個簡單的Code-First示例吧:
假定,我們想為XYZ學校建立一個簡單的應用程式,使用這個程式來添加、更新學生資訊,以及學生分數資訊,班級資訊還有老師資訊。
不像之前傳統做法那樣,先建立資料庫,這裡我們為我們的學生建立學生領域類。首先建立Student,以及Grade實體,代碼中一個學生實體和一個Grade實體相關聯。這被稱作為一對多的關系。後面的章節中,我們将會學到EF怎麼管理實體之間的關系。
我們建立一個控制台應用程式,安裝好EF。
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsISM9AnYldnJwAzN9c3Pn5GcuQ0MlMWbidXN51UeBRlTzsGROVTQU1EdVpXT6dmeNNTTU1UerpWT6FEVPhXQq1EdFpWT5VFRONDO510drRVT3lkeMhXSq1UMRpnT2NmMiNnSywEd5ITW110MaZHetlVdO1GT0UERNl3YXJGc5kHT20ESjBjUIF2Lc12bj5SYphXa5VWen5WY35iclN3Ztl2Lc9CX6MHc0RHaiojIsJye.png)
然後建立Student 和Grade類
public class Student
{
/// <summary>
/// 學生ID
/// </summary>
public int StudentID { get; set; }
/// <summary>
/// 學生姓名
/// </summary>
public string StudentName { get; set; }
/// <summary>
/// 出生日期
/// </summary>
public DateTime? DateOfBirth { get; set; }
/// <summary>
/// 圖檔
/// </summary>
public byte[] Photo { get; set; }
/// <summary>
/// 身高
/// </summary>
public decimal Height { get; set; }
/// <summary>
/// 體重
/// </summary>
public float Weight { get; set; }
/// <summary>
/// 導航屬性--Grade--年級
/// </summary>
public Grade Grade { get; set; }
}
public class Grade
{
public int GradeID { get; set; }
public string GradeName { get; set; }
public string Section { get; set; }
public ICollection<Student> Students { get; set; }
}
如上,我們建立好了程式的領域類。
Code-First方式,同樣還需要一個上下文類,上下文類是繼承自DbContext類的類。建立一個上下文類,如下,它繼承自DbContext,暴露兩個屬性Students和Grades.
現在,我們已經建立好了Code-First方式需要的類,現在來測試一下:
運作項目:
表示一個學生資訊已經成功添加到了資料庫中。
但是,資料庫在哪裡呢?資料表呢?資料列呢?
這就是EF Code-First API 迷人之處。它基于你在上下文類的構造函數中傳遞的參數,建立資料庫。因為這裡,我們在上下文類的構造函數中沒有傳遞任何參數,EF 就給我們在這裡建立了資料庫:
C:\Users\你的計算機名稱
這個資料庫不能附加,我們可以在配置檔案,配置一下:
然後修改一下,上下文類的構造函數:
再運作項目看看:
說明成功建立了資料庫,我們看下生成的資料庫:
就像上面圖形中所示,EF為我們建立了資料庫,還建立了相應的資料表,資料列。這樣我們就使用Code-First,建立了資料庫.
請注意:如果你修改了實體,再運作項目的話,就會報錯:例如,我在Student實體中加一個屬性Email。
然後運作項目:
出現這個錯誤,是需要進行資料庫遷移。你需要在上下文類中,定義資料庫初始化政策,然後修改實體,最後運作項目。資料庫遷移技術,我好多系列文章中都講到了,當然 這個系列還是會告訴大家怎麼配置,大家可以到時候好好跟着我鞏固一下。
你現在肯定很好奇,EF API是怎麼建立合适類型的資料列的,怎麼建立主鍵,怎麼建立外鍵的?答案就是使用Code-First預設的約定配置。下面一節中,我們将學習Code-First預設約定。