EF DbFirst模式中的枚舉類型使用
這一節介紹EF DbFirst模式中的Enum(枚舉類型),CodeFirst模式中的Enum會在以后的EF CoreFirst系列中介紹。EF5中添加了對Enum的支持。現在Enum支持的數據類型有:Int16,int32,int63,byte,sbyte。
EF中Enum的使用有兩種:
① 通過EDM設計器將實體中的某一屬性轉換為枚舉類型
② 使用已存在的枚舉
1.通過EDM設計器將實體中的某一屬性轉換為枚舉類型
一個栗子:
我們將把Teacher表的TeacherType列轉換為枚舉類型。在TeacherType中1表示permanent teachers類型,2表示contractor teachers類型,3表示guest teachers類型。
實現方法:在Teacher的TeacherType屬性上點擊右鍵,選擇Convert to Enum,如下圖
這時會彈出Add Enum Type會話框,將Underlying Type設置為int32(和數據庫中類型對應),添加枚舉成員如下圖所示
點擊Ok后打開模型瀏覽器發現在Enum Type文件夾下多了TeacherType,Teacher模型中的TeacherType也變成了TeacherType。
這時我們就可以在代碼中使用枚舉類型了:
using (var ctx = new SchoolDBEntities()) { Teacher tchr = new Teacher(); tchr.TeacherName = "New Teacher"; //指定枚舉類型 tchr.TeacherType = TeacherType.Permanent; ctx.Teachers.Add(tchr); ctx.SaveChanges(); }
2.使用已存在的枚舉
如果我們已經有了一個枚舉類型,我們可以把任意一個實體的屬性的數據類型指定為這個枚舉類型。
實現方法:在模型設計器中右鍵->Add New->Enum Type->填入枚舉的名字(不用添加成員,因為我們在代碼中已經有了枚舉的成員),選擇 Refernce external type ,填入枚舉的命名空間,點擊Ok就可以了。這時模型瀏覽器的Enum Type文件夾中就有了我們添加的枚舉。我們可以把這個枚舉指定給任意實體的任意屬性。
EF系列目錄鏈接:Entity Franmework系列教程匯總