天天看點

學習MVC之租房網站(三)-編寫實體類并建立資料庫

編寫Eneity類并采用CodeFirst的方式建立資料庫

在上一篇<學習MVC之租房網站(二)-架構搭建及準備工作>中,搭建好了項目架構,并配置了EF、Log4Net和程序外Session。接下來會編寫Eneity類并采用CodeFirst的方式建立資料庫。

一、資料庫表結構舉例

1. 在按照CodeFirst方式編寫Entity類之前,仍然是需要先搞清楚資料庫的表結構。首先肯定會有使用者、管理者、角色、權限等相關的表,然後針對租房的特殊場景,還有房屋、房屋家電配置、房子所在的位址包括城市和區域等。

學習MVC之租房網站(三)-編寫實體類并建立資料庫

2. 這裡面有兩張表比較特殊,T_Settings和T_IdNames:

T_Settings用于儲存運作所需的配置項,這些以往都是儲存在Web.Config中的。

T_IdNames用于集中儲存一些類似鍵值對的選項,比如房子的戶型會有一室一廳、一室兩廳等,裝修狀态會有精裝、簡裝、毛坯等狀态,這一類的選項如果都單獨建一張表,表的數量會比較多,就全部集中到T_IdNames中了。

3. 表與表之間有各種關聯關系,典型的如使用者、角色、權限的關聯,還有房子與裝修狀态、房子與房屋配置等的關聯。

二、建立Entity類

1. 明确了資料表結構後,就可以按照表結建構立Entiy了:

學習MVC之租房網站(三)-編寫實體類并建立資料庫

這裡有個特殊的BaseEntity,不會與資料庫中的某張表對應,而是抽取了所有表都會有的一些公用屬性,比如ID,Name等

學習MVC之租房網站(三)-編寫實體類并建立資料庫

而且,這兒用到了屬性的預設指派,這個也是較新的文法,上次說??是7.0的文法有人質疑,這個為屬性賦預設值的寫法也不确定是那個版本了。

實體之間互相引用時,要使用Virtual修飾,PermissionEntity引用RoleEntity便是如此,因為這樣才可以使用EF的延遲加載

學習MVC之租房網站(三)-編寫實體類并建立資料庫

2. 用FluentAPI配置實體

實體的配置有兩種方法,一種是用加标簽的方式

學習MVC之租房網站(三)-編寫實體類并建立資料庫

比如這樣,設定Msg屬性的最大長度為50;

還有一種就是将會使用的FluentAPI,這種方式便于集中配置,更受歡迎。

對PermissionEntity的配置如下:

學習MVC之租房網站(三)-編寫實體類并建立資料庫

​這樣生成資料表時就會按照配置來設定表的名稱、字段的最大長度、是否可空等。

 三、生成資料庫

将每個實體對應的的配置都寫好,運作項目,就會自動建立資料庫了。EF預設會一直跟蹤并自動維護實體和資料表對應關系的變化(通過dbo. __MigrationHistory),這兒不需要這樣做,關閉這個功能,通過在DbContext的構造函數中設定Database.SetInitializer<ZszDBContext>(null)。

注:

課程内容來自如鵬網(www.rupeng.com),專注于大學生就業的線上教育平台;

ASP.NET MVC課程 http://www.rupeng.com/News/9/640.shtml