Entity Framework中的Enum
Enum在Entity Framework 5.0以后得到支持。可以为以下数据类型创建Enum:
- Int16
- Int32
- Int64
- Byte
- SByte
Enum可以在以下情况下使用:
1、从EDM设计器将实体的现有属性转换为枚举类型。
2、使用来自不同命名空间的现有enum类型。
将现有属性转换为Enum
在这里,我们将使用Teacher表中的TeacherType整型列。枚举值1代表永久教师,2代表合同工教师,3代表客座教师。
现在,要从设计器中将TeacherType属性转换为枚举类型,右键单击Teacher实体的TeacherType属性,然后单击上下文菜单中的convert to enum,如下所示。
它将打开“Add Enum Type”对话框。输入Enum类型名称,并在“Underlying Type”下拉框中选择int32。输入枚举成员名,如下所示。
这将在模型浏览器中将TeacherType添加为Enum类型,如下所示:
同样,你可以看到TeacherType属性的类型被转换为TeacherType Enum:
现在,您可以使用TeacherType Enum来分配一个TeacherType值,而不是一个整数值,如下所示。
using (var ctx = new SchoolDBEntities())
{
Teacher tchr = new Teacher();
tchr.TeacherName = "New Teacher";
//赋一个枚举值
tchr.TeacherType = TeacherType.Permanent;
ctx.Teachers.Add(tchr);
ctx.SaveChanges();
}
使用不同命名空间中的现有Enum
如果已经在代码中创建了Enum类型,则可以将其用作任何实体属性的数据类型。
要使用现有的Enum类型,右键单击设计器→添加新的→Enum类型。在对话框中输入Enum类型名称。不要输入成员,因为在代码中已经有了成员。
现在,选择“引用外部类型”复选框,输入现有枚举的名称空间,然后单击OK。这将在Model浏览器中添加Enum类型。现在,您可以将此Enum类型分配给属性窗口中任何实体的任何适当属性。
注意:如果你想对你的Enum使用位操作符,选择“Set Flags属性”。
参考
https://www.entityframeworktutorial.net/
https://msdn.microsoft.com/