天天看點

3.EF Code-First 示例

原文連結:http://www.entityframeworktutorial.net/code-first/simple-code-first-example.aspx

在前面一節中,我們學會了怎麼,在我們項目中安裝Entity Framework。現在我們來建立一個簡單的Code-First示例吧:

假定,我們想為XYZ學校建立一個簡單的應用程式,使用這個程式來添加、更新學生資訊,以及學生分數資訊,班級資訊還有老師資訊。

不像之前傳統做法那樣,先建立資料庫,這裡我們為我們的學生建立學生領域類。首先建立Student,以及Grade實體,代碼中一個學生實體和一個Grade實體相關聯。這被稱作為一對多的關系。後面的章節中,我們将會學到EF怎麼管理實體之間的關系。

我們建立一個控制台應用程式,安裝好EF。

3.EF Code-First 示例

然後建立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.

3.EF Code-First 示例

現在,我們已經建立好了Code-First方式需要的類,現在來測試一下:

3.EF Code-First 示例

運作項目:

3.EF Code-First 示例

 表示一個學生資訊已經成功添加到了資料庫中。

但是,資料庫在哪裡呢?資料表呢?資料列呢?

這就是EF Code-First API 迷人之處。它基于你在上下文類的構造函數中傳遞的參數,建立資料庫。因為這裡,我們在上下文類的構造函數中沒有傳遞任何參數,EF 就給我們在這裡建立了資料庫:

C:\Users\你的計算機名稱

3.EF Code-First 示例

這個資料庫不能附加,我們可以在配置檔案,配置一下:

3.EF Code-First 示例

然後修改一下,上下文類的構造函數:

3.EF Code-First 示例

再運作項目看看:

3.EF Code-First 示例

 說明成功建立了資料庫,我們看下生成的資料庫:

3.EF Code-First 示例
3.EF Code-First 示例

就像上面圖形中所示,EF為我們建立了資料庫,還建立了相應的資料表,資料列。這樣我們就使用Code-First,建立了資料庫.

請注意:如果你修改了實體,再運作項目的話,就會報錯:例如,我在Student實體中加一個屬性Email。

3.EF Code-First 示例

然後運作項目:

3.EF Code-First 示例

 出現這個錯誤,是需要進行資料庫遷移。你需要在上下文類中,定義資料庫初始化政策,然後修改實體,最後運作項目。資料庫遷移技術,我好多系列文章中都講到了,當然 這個系列還是會告訴大家怎麼配置,大家可以到時候好好跟着我鞏固一下。

你現在肯定很好奇,EF API是怎麼建立合适類型的資料列的,怎麼建立主鍵,怎麼建立外鍵的?答案就是使用Code-First預設的約定配置。下面一節中,我們将學習Code-First預設約定。