📅  最后修改于: 2020-11-21 07:24:16             🧑  作者: Mango
在Entity Framework中,此功能将允许您在作为枚举类型的域类上定义属性,并将其映射到整数类型的数据库列。然后,当查询和保存数据时,实体框架将在相关枚举之间来回转换数据库值。
枚举类型在处理具有固定数量响应的属性时具有各种好处。
使用枚举时,应用程序的安全性和可靠性都会提高。
枚举使用户更难犯错误,并且不存在注入攻击之类的问题。
在实体框架中,枚举可以具有以下基础类型-
枚举元素的默认基础类型为int。
默认情况下,第一个枚举数的值为0,并且每个连续的枚举数的值增加1。
让我们看下面的示例,在该示例中,我们将在设计器中创建一个实体,然后添加一些属性。
步骤1-从文件→新建→项目菜单选项创建新项目。
步骤2-在左窗格中,选择控制台应用程序。
步骤3-输入EFEnumDemo作为项目名称,然后单击确定。
步骤4-在解决方案资源管理器中右键单击项目名称,然后选择添加→新建项目菜单选项。
步骤5-在“模板”窗格中选择“ ADO.NET实体数据模型”。
步骤6-输入EFEnumModel.edmx作为文件名,然后单击添加。
步骤7-在“实体数据模型向导”页面上,选择“空EF设计器模型”。
步骤8-单击完成
步骤9-然后右键单击设计器窗口,然后选择添加→实体。
出现新实体对话框,如下图所示。
步骤10-输入部门作为实体名称,并输入DeptID作为属性名称,将属性类型保留为Int32,然后单击确定。
步骤11-右键单击实体,然后选择添加新→标量属性。
步骤12-将新属性重命名为DeptName。
步骤13-将新属性的类型更改为Int32(默认情况下,新属性为String类型)。
步骤14-要更改类型,请打开“属性”窗口,然后将“类型”属性更改为Int32。
步骤15-在实体框架设计器中,右键单击名称属性,选择转换为枚举。
步骤16-在“添加枚举类型”对话框中,为“枚举类型名称”输入DepartmentNames,将基础类型更改为Int32,然后将以下成员添加到该类型:物理,化学,计算机和经济学。
步骤17-单击确定。
如果切换到“模型浏览器”窗口,您将看到该类型也已添加到“枚举类型”节点。
让我们按照“模型优先”方法一章中提到的所有步骤从模型生成数据库。
步骤1-右键单击实体设计器表面,然后选择“从模型生成数据库”。
显示“生成数据库向导”的“选择数据连接”对话框。
步骤2-单击“新建连接”按钮。
步骤3-输入数据库的服务器名称和EnumDemo,然后单击确定。
步骤4-将弹出询问您是否要创建新数据库的对话框,单击“是”。
步骤5-单击“下一步”,“创建数据库向导”将生成用于创建数据库的数据定义语言(DDL)。现在单击完成。
步骤6-右键单击T-SQL编辑器,然后选择执行。
步骤7-要查看生成的架构,请在SQL Server Object Explorer中右键单击数据库名称,然后选择Refresh。
您将在数据库中看到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
我们建议您逐步执行上述示例,以更好地理解。