EF中关于实体类枚举问题

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类型。

EF中关于实体类枚举问题

实现方法:在Teacher的TeacherType属性上点击右键,选择Convert to Enum,如下图

EF中关于实体类枚举问题

这时会弹出Add Enum Type会话框,将Underlying Type设置为int32(和数据库中类型对应),添加枚举成员如下图所示

EF中关于实体类枚举问题

点击Ok后打开模型浏览器发现在Enum Type文件夹下多了TeacherType,Teacher模型中的TeacherType也变成了TeacherType。

 EF中关于实体类枚举问题                   EF中关于实体类枚举问题

 

 这时我们就可以在代码中使用枚举类型了:

EF中关于实体类枚举问题
using (var ctx = new SchoolDBEntities())
{
    Teacher tchr = new Teacher();
    tchr.TeacherName = "New Teacher";

    //指定枚举类型
    tchr.TeacherType = TeacherType.Permanent;

    ctx.Teachers.Add(tchr);
    ctx.SaveChanges();
}
EF中关于实体类枚举问题

2.使用已存在的枚举

如果我们已经有了一个枚举类型,我们可以把任意一个实体的属性的数据类型指定为这个枚举类型。

实现方法:在模型设计器中右键->Add New->Enum Type->填入枚举的名字(不用添加成员,因为我们在代码中已经有了枚举的成员),选择 Refernce external type ,填入枚举的命名空间,点击Ok就可以了。这时模型浏览器的Enum Type文件夹中就有了我们添加的枚举。我们可以把这个枚举指定给任意实体的任意属性。

 

出自猴子捞月:https://www.cnblogs.com/wyy1234/p/9641210.html

上一篇:【EF Code First 实用笔记】(二) 示例:为.NET项目安装 EF Code First 开发环境


下一篇:2018/03/26 每日一个Linux命令 之 du