成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

詳解ADO.NET Entity Framework 4中枚舉的使用

開發(fā) 后端
在Visual Studio 2010正式發(fā)布后,.NET 4的重要組件ADO.NET Entity Framework 4也浮出水面。本文將為大家介紹其中關(guān)于枚舉的使用。

本文將通過ADO.NET Entity Framework 4中枚舉的使用介紹,帶領(lǐng)大家走進(jìn)ADO.NET的世界。

枚舉(Enum)是一種常用的類型,如用于表示狀態(tài)、類型等參數(shù)。但目前它不會被官方地在ADO.NET Entity Framework中進(jìn)行支持。本文介紹的是通過復(fù)雜類型(Complex Types)在ADO.NET Entity Framework 4中使用枚舉。

這種方法需要使用POCO類,而不能使用Visual Studio自動生成的類。因為我們需要手動為復(fù)雜類型編寫代碼。

數(shù)據(jù)庫腳本:

  1. if exists (select 1  
  2.              from  sysobjects  
  3.             where  id = object_id('Account')  
  4.              and   type = 'U')  
  5.     drop table Account  
  6.  go  
  7.    
  8.  create table Account (  
  9.     ID                   uniqueidentifier     not null default NewSequentialID(),  
  10.    UserName             nvarchar(20)         not null,  
  11.    Password             varchar(40)          not null,  
  12.   Email                nvarchar(100)        not null,  
  13.    Role                 int                  not null,  
  14.    constraint PK_ACCOUNT primary key (ID)  
  15. )  
  16.  
  17. insert into Account (UserName ,Password,Email ,Role ) values ('Test1','Test1','test1',1)  
  18. insert into Account (UserName ,Password,Email ,Role ) values ('Test2','Test2','test2',1)  
  19. insert into Account (UserName ,Password,Email ,Role ) values ('Test3','Test3','test3',2) 

這是一個用于存放帳號信息的數(shù)據(jù)表,Role是個枚舉類型,在數(shù)據(jù)庫中用int類型。

我們按常規(guī)做法寫一個用于表示Role的枚舉類型

  1. public enum AccountRoleEnum  
  2. {  
  3.     Admin = 1,  
  4.     User = 2  

然后寫一個復(fù)雜類型用于在枚舉類型和數(shù)據(jù)庫的int類型之間做變換。復(fù)雜類型只有在ADO.NET Entity Framework 4中才有。

  1. public partial class RoleWrapper  
  2.  {  
  3.      private AccountRoleEnum m_orderStatus;  
  4.    
  5.      public int Value  
  6.      {  
  7.          get { return (int)m_orderStatus; }  
  8.          set { m_orderStatus = (AccountRoleEnum)value; }  
  9.      }  
  10.  
  11.     public AccountRoleEnum EnumValue  
  12.     {  
  13.         get { return m_orderStatus; }  
  14.         set { m_orderStatus = value; }  
  15.     }  
  16.  
  17.     public static implicit operator RoleWrapper(AccountRoleEnum role)  
  18.     {  
  19.         return new RoleWrapper { EnumValue = role };  
  20.     }  
  21.  
  22.     public static implicit operator AccountRoleEnum(RoleWrapper role)  
  23.     {  
  24.         if (role == null)  
  25.             return AccountRoleEnum.User;  
  26.         return role.EnumValue;  
  27.     }  

最后的2個方法用于隱式類型重載,也就是對類型進(jìn)行變換。
然后我們寫Account實體。

  1. public class Account  
  2. {  
  3.     public Guid ID { getset; }  
  4.     public string UserName { getset; }  
  5.     public string Password { getset; }  
  6.     public string Email { getset; }   
  7.    public RoleWrapper Role { getset; }  

和實體框架上下文。

  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;  

這樣,主要的工作就已經(jīng)完成了,在比較時可以使用

  1. account.Role == AccountRoleEnum.Admin 

但是在涉及到數(shù)據(jù)庫的查詢時,這樣的寫法是會報錯的,只能使用

  1. EntitiesContext db = new EntitiesContext();  
  2. db.Accounts.Where(c => c.Role.Value == (int)AccountRoleEnum.Admin); 
原文標(biāo)題:在 ADO.NET Entity Framework 4 中使用枚舉
鏈接:http://www.cnblogs.com/snowdream/archive/2010/04/19/use-enum-in-adonet-entity-framework-4.html
責(zé)任編輯:彭凡 來源: 博客園
相關(guān)推薦

2009-12-30 14:03:36

ADO.NET Ent

2009-11-03 16:27:43

ADO.NET Ent

2009-12-22 14:46:09

ADO.NET Ent

2009-12-22 17:14:37

ADO.NET Ent

2009-12-23 16:00:50

ADO.NET Ent

2009-12-30 09:10:04

ADO.NET Ent

2009-12-30 10:14:41

ADO.NET Ent

2009-12-22 16:03:34

ADO.NET Ent

2009-12-30 10:43:31

ADO.NET Ent

2009-09-04 14:52:03

ADO.NET Ent

2009-12-23 16:15:24

ADO.NET Ent

2009-12-31 14:56:36

ADO.NET Ent

2009-11-11 15:59:17

ADO.NET Ent

2009-12-28 15:11:36

ADO.NET專家

2011-05-20 17:05:59

ADO.NET

2009-11-12 13:26:56

使用ADO.NET參數(shù)

2009-12-23 17:50:38

ADO.NET Fra

2009-12-30 14:12:53

ADO.NET Fra

2009-12-22 17:09:34

ADO.NET Ent

2009-12-30 10:02:37

ADO.NET Ent
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 亚洲国产成人在线视频 | 一区中文字幕 | 欧美不卡在线 | 亚洲欧美日韩一区二区 | 视频一区二区在线观看 | 四虎在线观看 | 欧美aaaa视频 | 欧美日韩黄色一级片 | 欧美亚洲国产一区二区三区 | 一级黄色片免费在线观看 | 久久精品视频9 | 成人一区二区三区在线观看 | 亚洲一区免费在线 | 欧美乱码精品一区二区三区 | 国产一区二区精 | 日本精品一区二区三区视频 | 亚洲欧美日韩一区二区 | 一区在线观看视频 | 成人二区 | 中文字幕在线一区二区三区 | 在线观看成人小视频 | 亚洲一区二区三区在线视频 | av手机免费在线观看 | 日韩免费视频 | 99精品久久久 | 成人小视频在线观看 | 操久久| 精品96久久久久久中文字幕无 | 国产精品久久久亚洲 | 天天影视亚洲综合网 | 超碰国产在线 | 99久久久国产精品免费消防器 | 欧美视频第二页 | 精品日韩一区二区 | 91小视频| 天天综合久久 | 亚洲色图综合 | 精品99久久久久久 | 免费看黄色小视频 | 911网站大全在线观看 | 综合网在线 |