在 ADO.NET Entity Framework 4 中使用枚举
2010-04-19 13:50
351 查看
枚举(Enum)是一种常用的类型,如用于表示状态、类型等参数。但目前它不会被官方地在ADO.NET Entity Framework中进行支持。本文介绍的是通过复杂类型(Complex Types)在ADO.NET Entity Framework 4中使用枚举。
这种方法需要使用POCO类,而不能使用Visual Studio自动生成的类。因为我们需要手动为复杂类型编写代码。
数据库脚本:
代码
1 public class EntitiesContext : ObjectContext
2 {
3 public EntitiesContext()
4 : base("name=Entities", "Entities")
5 {
6 _accounts = CreateObjectSet<Account>();
7 }
8
9 public ObjectSet<Account> Accounts
10 {
11 get
12 {
13 return _accounts;
14 }
15 }
16 private ObjectSet<Account> _accounts;
17 }
这样,主要的工作就已经完成了,在比较时可以使用
1 account.Role == AccountRoleEnum.Admin
但是在涉及到数据库的查询时,这样的写法是会报错的,只能使用
1 EntitiesContext db = new EntitiesContext();
2 db.Accounts.Where(c => c.Role.Value == (int)AccountRoleEnum.Admin);
参考文章
http://blogs.msdn.com/adonet/archive/2009/05/21/poco-in-the-entity-framework-part-1-the-experience.aspx
http://blogs.msdn.com/alexj/archive/2009/06/05/tip-23-how-to-fake-enums-in-ef-4.aspx
这种方法需要使用POCO类,而不能使用Visual Studio自动生成的类。因为我们需要手动为复杂类型编写代码。
数据库脚本:
代码
1 public class EntitiesContext : ObjectContext
2 {
3 public EntitiesContext()
4 : base("name=Entities", "Entities")
5 {
6 _accounts = CreateObjectSet<Account>();
7 }
8
9 public ObjectSet<Account> Accounts
10 {
11 get
12 {
13 return _accounts;
14 }
15 }
16 private ObjectSet<Account> _accounts;
17 }
这样,主要的工作就已经完成了,在比较时可以使用
1 account.Role == AccountRoleEnum.Admin
但是在涉及到数据库的查询时,这样的写法是会报错的,只能使用
1 EntitiesContext db = new EntitiesContext();
2 db.Accounts.Where(c => c.Role.Value == (int)AccountRoleEnum.Admin);
参考文章
http://blogs.msdn.com/adonet/archive/2009/05/21/poco-in-the-entity-framework-part-1-the-experience.aspx
http://blogs.msdn.com/alexj/archive/2009/06/05/tip-23-how-to-fake-enums-in-ef-4.aspx
相关文章推荐
- 使用ADO.NET Entity Framework 4.1进行Code First模式的开发
- win7 64位下使用oracle ado.net entity framework
- 在 ADO.NET Entity Framework 中使用存储过程
- 在 ADO.NET Entity Framework 中使用存储过程
- ADO.NET Entity Framework 如何:自定义建模和映射文件以使用自定义对象(实体框架)
- 在使用 ADO.NET Entity Framework 时生成的实体类个数少于数据表个数的几种情况及原因分析
- 如何解决ado.net entity framework的使用,再别的调用项目中依然正常
- ADO.NET Entity Framework esql 使用手册
- ADO.NET Entity Framework使用实体数据
- ado.net entity framework使用odp.net(ODAC for .net)连接oracle11g体验
- ADO.NET Entity Framework如何:使用实体数据模型向导(实体框架)
- ADO.NET Entity Framework 如何:使用 EdmGen.exe 生成模型和映射文件
- ADO.NET Entity Framework 使用数据定义语言(实体框架)
- ADO.NET Entity FrameWork 属性类型映射到自定义枚举
- 在N-Tier 或多层应用程序中使用ADO.NET Entity Framework
- [转载]使用ADO.NET EntityFramework实体模型类
- 从Oxite看使用了ADO.NET Entity Framework的应用程序的多层架构
- ADO.NET Entity Framework 如何:使用 EdmGen.exe 生成对象层代码
- 在N-Tier 或多层应用程序中使用ADO.NET Entity Framework
- ADO.NET Entity Framework 如何:使用 EdmGen.exe 验证模型和映射文件