- 实体框架教程
- 实体框架 - 首页
- 实体框架 - 概述
- 实体框架 - 架构
- 实体框架 - 环境设置
- 实体框架 - 数据库设置
- 实体框架 - 数据模型
- 实体框架 - DbContext
- 实体框架 - 数据类型
- 实体框架 - 关系
- 实体框架 - 生命周期
- 实体框架 - 代码优先方法
- 实体框架 - 模型优先方法
- 实体框架 - 数据库优先方法
- 实体框架 - 开发方法
- 实体框架 - 数据库操作
- 实体框架 - 并发
- 实体框架 - 事务
- 实体框架 - 视图
- 实体框架 - 索引
- 实体框架 - 存储过程
- 实体框架 - 脱机实体
- 实体框架 - 表值函数
- 实体框架 - 原生 SQL
- 实体框架 - 枚举支持
- 实体框架 - 异步查询
- 实体框架 - 持久化
- 实体框架 - 投影查询
- 实体框架 - 命令日志
- 实体框架 - 命令拦截
- 实体框架 - 空间数据类型
- 实体框架 - 继承
- 实体框架 - 迁移
- 实体框架 - 渴望加载
- 实体框架 - 延迟加载
- 实体框架 - 显式加载
- 实体框架 - 验证
- 实体框架 - 跟踪更改
- 实体框架 - 彩色实体
- 实体框架 - 代码优先方法
- 实体框架 - 第一个示例
- 实体框架 - 数据注解
- 实体框架 - Fluent API
- 实体框架 - 初始化数据库
- 实体框架 - 代码优先迁移
- 实体框架 - 多个 DbContext
- 实体框架 - 嵌套实体类型
- 实体框架资源
- 实体框架 - 快速指南
- 实体框架 - 有用资源
- 实体框架 - 讨论
实体框架 - 枚举支持
在实体框架中,此功能允许您在域类上定义一个枚举类型属性,并将其映射到整型类型的数据库列。然后,实体框架会在查询和保存数据时将数据库值转换为相关的枚举,反之亦然。
当处理具有固定数量响应的属性时,枚举类型具有各种好处。
当您使用枚举时,应用程序的安全性和可靠性都会提高。
枚举使用户犯错的可能性大大降低,并且诸如注入攻击之类的问题根本不存在。
在实体框架中,枚举可以具有以下底层类型:
- 字节 (Byte)
- Int16
- Int32
- Int64
- SByte
枚举元素的默认底层类型为 int。
默认情况下,第一个枚举器的值为 0,每个后续枚举器的值增加 1。
让我们来看下面的示例,我们将创建一个实体并在其中添加一些属性。
步骤 1 - 从“文件”→“新建”→“项目”菜单选项创建新项目。
步骤 2 - 在左侧窗格中,选择“控制台应用程序”。
步骤 3 - 输入 EFEnumDemo 作为项目名称,然后单击“确定”。
步骤 4 - 右键单击解决方案资源管理器中的项目名称,然后选择“添加”→“新建项”菜单选项。
步骤 5 - 在“模板”窗格中选择“ADO.NET 实体数据模型”。
步骤 6 - 输入 EFEnumModel.edmx 作为文件名,然后单击“添加”。
步骤 7 - 在“实体数据模型向导”页面上,选择“空 EF 设计器模型”。
步骤 8 - 单击“完成”。
步骤 9 - 然后右键单击设计器窗口,然后选择“添加”→“实体”。
将出现“新建实体”对话框,如下图所示。
步骤 10 - 输入 Department 作为实体名称,DeptID 作为属性名称,将属性类型保留为 Int32,然后单击“确定”。
步骤 11 - 右键单击实体,然后选择“添加新”→“标量属性”。
步骤 12 - 将新属性重命名为 DeptName。
步骤 13 - 将新属性的类型更改为 Int32(默认情况下,新属性的类型为字符串)。
步骤 14 - 要更改类型,请打开“属性”窗口并将“类型”属性更改为 Int32。
步骤 15 - 在实体框架设计器中,右键单击 Name 属性,选择“转换为枚举”。
步骤 16 - 在“添加枚举类型”对话框中,输入 DepartmentNames 作为枚举类型名称,将“底层类型”更改为 Int32,然后向该类型添加以下成员:物理学、化学、计算机和经济学。
步骤 17 - 单击“确定”。
如果您切换到“模型浏览器”窗口,您将看到该类型也已添加到“枚举类型”节点。
让我们按照“模型优先方法”章节中提到的所有步骤从模型生成数据库。
步骤 1 - 右键单击实体设计器界面,然后选择“从模型生成数据库”。
将显示“生成数据库向导”的“选择数据连接”对话框。
步骤 2 - 单击“新建连接”按钮。
步骤 3 - 输入服务器名称和 EnumDemo 作为数据库名称,然后单击“确定”。
步骤 4 - 将弹出一个对话框询问您是否要创建一个新数据库,单击“是”。
步骤 5 - 单击“下一步”,创建数据库向导将生成用于创建数据库的数据定义语言 (DDL)。现在单击“完成”。
步骤 6 - 右键单击 T-SQL 编辑器,然后选择“执行”。
步骤 7 - 要查看生成的模式,请右键单击 SQL Server 对象资源管理器中的数据库名称,然后选择“刷新”。
您将在数据库中看到 Departments 表。
让我们来看下面的示例,在这个示例中,一些新的 Department 对象被添加到上下文中并保存。然后检索计算机系。
class Program { static void Main(string[] args) { using (var context = new EFEnumModelContainer()) { context.Departments.Add(new Department { DeptName = DepartmentNames.Physics}); context.Departments.Add(new Department { DeptName = DepartmentNames.Computer}); context.Departments.Add(new Department { DeptName = DepartmentNames.Chemistry}); context.Departments.Add(new Department { DeptName = DepartmentNames.Economics}); context.SaveChanges(); var department = ( from d in context.Departments where d.DeptName == DepartmentNames.Computer select d ).FirstOrDefault(); Console.WriteLine( "Department ID: {0}, Department Name: {1}", department.DeptID, department.DeptName ); Console.ReadKey(); } } }
执行上述代码后,您将收到以下输出:
Department ID: 2, Department Name: Computer
我们建议您逐步执行上述示例,以便更好地理解。