close

Entity Framework提供繼承的機制,讓開發人員可以用抽象的方式去處理資料,而不會被資料表的設計給限制住。

假設現在有一個資料表叫Person,裡面記錄姓名跟職業,由於職業很多種,所以用數字來表示不同的職業。

2008-09-01_165742

如果不同的職業有不同的程式邏輯,用一般的作法,可能會不好管理,但透過繼承以及虛擬函式,可以減少許多不必要的麻煩,下面就來示範Entity Framework上的繼承。

新建一個Web專案,並新增ADO.NET實體資料模型。

2008-09-01_165852

資料表選擇Person。

2008-09-01_165933 2008-09-01_170049

之後刪除Person上的occupation屬性。

2008-09-01_170113

之後加入新的類別Teacher,基底類別選擇Person。

2008-09-01_170157

然後在條件式上設定當occupation為1時,表示為Teacher類別。

2008-09-01_170255

記得在Person上也要設定好條件,不然編譯不會過。

2008-09-01_170334

之後再依序增加Student以及Police類別,並照剛剛的方式設定條件。

2008-09-01_170712

這邊我們對Person新增一個虛擬函式:WhoAmI。

2008-09-01_192552

其它繼承Person的類別則照下面的程式碼覆寫WhoAmI。

2008-09-01_192606

當呼叫WhoAmI函式時,就會依照不同的實體找到真正對應的函式。

在Page_Load,把所有的資料都抓出來,並呼叫WhoAmI函式。

2008-09-01_200143

執行結果。

2008-09-01_200235

現在,多增加一個新增資料的功能,在Default.aspx上,新增二個TextBox、一個DropDownList以及Button,命名如下

  • FirstNameTextBox、LastNameTextBox
  • OccupationDropDownList
  • SubmitBtn

2008-09-02_151035

在OccupationDropDownList,新增下列元素。

2008-09-02_151056

新增按鈕的程式碼。

2008-09-02_152202

修改Page_Load的程式碼。

2008-09-02_152214

重新執行一次,並新增一筆資料

2008-09-02_151945

2008-09-02_152056

arrow
arrow
    全站熱搜

    卑微研究生 發表在 痞客邦 留言(2) 人氣()