EF中关于实体类枚举问题
Posted W~C停用
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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类型。
实现方法:在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文件夹中就有了我们添加的枚举。我们可以把这个枚举指定给任意实体的任意属性。
出自猴子捞月:https://www.cnblogs.com/wyy1234/p/9641210.html
以上是关于EF中关于实体类枚举问题的主要内容,如果未能解决你的问题,请参考以下文章
带有 EF 和自动映射器的 OData:无法比较..'。仅支持原始类型、枚举类型和实体类型