html5中文学习网

您的位置: 首页 > 网站及特效实例 > jquery特效 » 正文

ADO.NET Entity Framework 4中枚举的使用_编程语言综合

[ ] 已经帮助:人解决问题

   本文将通过ADO.NET Entity Framework 4中枚举的使用介绍,带领大家走进ADO.NET的世界。5AjHTML5中文学习网 - HTML5先行者学习网

  枚举(Enum)是一种常用的类型,如用于表示状态、类型等参数。但目前它不会被官方地在ADO.NET Entity Framework中进行支持。本文介绍的是通过复杂类型(Complex Types)在ADO.NET Entity Framework 4中使用枚举。5AjHTML5中文学习网 - HTML5先行者学习网

  这种方法需要使用POCO类,而不能使用Visual Studio自动生成的类。因为我们需要手动为复杂类型编写代码。5AjHTML5中文学习网 - HTML5先行者学习网

  数据库脚本:5AjHTML5中文学习网 - HTML5先行者学习网

  if exists (select 15AjHTML5中文学习网 - HTML5先行者学习网

  from sysobjects5AjHTML5中文学习网 - HTML5先行者学习网

  where id = object_id('Account')5AjHTML5中文学习网 - HTML5先行者学习网

  and type = 'U')5AjHTML5中文学习网 - HTML5先行者学习网

  drop table Account go create table Account5AjHTML5中文学习网 - HTML5先行者学习网

  (5AjHTML5中文学习网 - HTML5先行者学习网

  ID uniqueidentifier not null default NewSequentialID(),5AjHTML5中文学习网 - HTML5先行者学习网

  UserName nvarchar(20) not null,5AjHTML5中文学习网 - HTML5先行者学习网

  Password varchar(40) not null,5AjHTML5中文学习网 - HTML5先行者学习网

  Email nvarchar(100) not null,5AjHTML5中文学习网 - HTML5先行者学习网

  Role int not null,5AjHTML5中文学习网 - HTML5先行者学习网

  constraint PK_ACCOUNT primary key (ID)5AjHTML5中文学习网 - HTML5先行者学习网

  )5AjHTML5中文学习网 - HTML5先行者学习网

  insert into Account (UserName ,Password,Email ,Role ) values ('Test1','Test1','test1',1)5AjHTML5中文学习网 - HTML5先行者学习网

  insert into Account (UserName ,Password,Email ,Role ) values ('Test2','Test2','test2',1)5AjHTML5中文学习网 - HTML5先行者学习网

  insert into Account (UserName ,Password,Email ,Role ) values ('Test3','Test3','test3',2)5AjHTML5中文学习网 - HTML5先行者学习网

  这是一个用于存放帐号信息的数据表,Role是个枚举类型,在数据库中用int类型。5AjHTML5中文学习网 - HTML5先行者学习网

  我们按常规做法写一个用于表示Role的枚举类型5AjHTML5中文学习网 - HTML5先行者学习网

  public enum AccountRoleEnum {5AjHTML5中文学习网 - HTML5先行者学习网

  Admin = 1,5AjHTML5中文学习网 - HTML5先行者学习网

  User = 25AjHTML5中文学习网 - HTML5先行者学习网

  }5AjHTML5中文学习网 - HTML5先行者学习网

  然后写一个复杂类型用于在枚举类型和数据库的int类型之间做变换。复杂类型只有在ADO.NET Entity Framework 4中才有。5AjHTML5中文学习网 - HTML5先行者学习网

  public partial class RoleWrapper5AjHTML5中文学习网 - HTML5先行者学习网

  {5AjHTML5中文学习网 - HTML5先行者学习网

  private AccountRoleEnum m_orderStatus;5AjHTML5中文学习网 - HTML5先行者学习网

  public int Value5AjHTML5中文学习网 - HTML5先行者学习网

  {5AjHTML5中文学习网 - HTML5先行者学习网

  get {5AjHTML5中文学习网 - HTML5先行者学习网

  return (int)m_orderStatus;5AjHTML5中文学习网 - HTML5先行者学习网

  }5AjHTML5中文学习网 - HTML5先行者学习网

  set {5AjHTML5中文学习网 - HTML5先行者学习网

  m_orderStatus = (AccountRoleEnum)value;5AjHTML5中文学习网 - HTML5先行者学习网

  } }5AjHTML5中文学习网 - HTML5先行者学习网

  public AccountRoleEnum EnumValue5AjHTML5中文学习网 - HTML5先行者学习网

  {5AjHTML5中文学习网 - HTML5先行者学习网

  get {5AjHTML5中文学习网 - HTML5先行者学习网

  return m_orderStatus;5AjHTML5中文学习网 - HTML5先行者学习网

  }5AjHTML5中文学习网 - HTML5先行者学习网

  set {5AjHTML5中文学习网 - HTML5先行者学习网

  m_orderStatus = value;5AjHTML5中文学习网 - HTML5先行者学习网

  }5AjHTML5中文学习网 - HTML5先行者学习网

  }5AjHTML5中文学习网 - HTML5先行者学习网

  public static implicit operator RoleWrapper(AccountRoleEnum role)5AjHTML5中文学习网 - HTML5先行者学习网

  {5AjHTML5中文学习网 - HTML5先行者学习网

  return new RoleWrapper {5AjHTML5中文学习网 - HTML5先行者学习网

  EnumValue = role5AjHTML5中文学习网 - HTML5先行者学习网

  };5AjHTML5中文学习网 - HTML5先行者学习网

  }5AjHTML5中文学习网 - HTML5先行者学习网

  public static implicit operator AccountRoleEnum(RoleWrapper role)5AjHTML5中文学习网 - HTML5先行者学习网

  {5AjHTML5中文学习网 - HTML5先行者学习网

  if (role == null)5AjHTML5中文学习网 - HTML5先行者学习网

  return AccountRoleEnum.User;5AjHTML5中文学习网 - HTML5先行者学习网

  return role.EnumValue;5AjHTML5中文学习网 - HTML5先行者学习网

  }5AjHTML5中文学习网 - HTML5先行者学习网

  } 最后的2个方法用于隐式类型重载,也就是对类型进行变换。5AjHTML5中文学习网 - HTML5先行者学习网

  然后我们写Account实体。5AjHTML5中文学习网 - HTML5先行者学习网

  public class Account5AjHTML5中文学习网 - HTML5先行者学习网

  {5AjHTML5中文学习网 - HTML5先行者学习网

  public Guid ID5AjHTML5中文学习网 - HTML5先行者学习网

  {5AjHTML5中文学习网 - HTML5先行者学习网

  get;5AjHTML5中文学习网 - HTML5先行者学习网

  set;5AjHTML5中文学习网 - HTML5先行者学习网

  }5AjHTML5中文学习网 - HTML5先行者学习网

  public string UserName { get; set;5AjHTML5中文学习网 - HTML5先行者学习网

  }5AjHTML5中文学习网 - HTML5先行者学习网

  public string Password5AjHTML5中文学习网 - HTML5先行者学习网

  {5AjHTML5中文学习网 - HTML5先行者学习网

  get;5AjHTML5中文学习网 - HTML5先行者学习网

  set;5AjHTML5中文学习网 - HTML5先行者学习网

  }5AjHTML5中文学习网 - HTML5先行者学习网

  public string Email5AjHTML5中文学习网 - HTML5先行者学习网

  {5AjHTML5中文学习网 - HTML5先行者学习网

  get;5AjHTML5中文学习网 - HTML5先行者学习网

  set;5AjHTML5中文学习网 - HTML5先行者学习网

  }5AjHTML5中文学习网 - HTML5先行者学习网

  public RoleWrapper Role5AjHTML5中文学习网 - HTML5先行者学习网

  {5AjHTML5中文学习网 - HTML5先行者学习网

  get;5AjHTML5中文学习网 - HTML5先行者学习网

  set;5AjHTML5中文学习网 - HTML5先行者学习网

  } 和实体框架上下文。5AjHTML5中文学习网 - HTML5先行者学习网

  public class EntitiesContext : ObjectContext5AjHTML5中文学习网 - HTML5先行者学习网

  {5AjHTML5中文学习网 - HTML5先行者学习网

  public EntitiesContext()5AjHTML5中文学习网 - HTML5先行者学习网

  : base("name=Entities", "Entities")5AjHTML5中文学习网 - HTML5先行者学习网

  {5AjHTML5中文学习网 - HTML5先行者学习网

  _accounts = CreateObjectSet();5AjHTML5中文学习网 - HTML5先行者学习网

  }5AjHTML5中文学习网 - HTML5先行者学习网

  public ObjectSet Accounts5AjHTML5中文学习网 - HTML5先行者学习网

  {5AjHTML5中文学习网 - HTML5先行者学习网

  get5AjHTML5中文学习网 - HTML5先行者学习网

  {5AjHTML5中文学习网 - HTML5先行者学习网

  return _accounts;5AjHTML5中文学习网 - HTML5先行者学习网

  }5AjHTML5中文学习网 - HTML5先行者学习网

  }5AjHTML5中文学习网 - HTML5先行者学习网

  private ObjectSet _accounts;5AjHTML5中文学习网 - HTML5先行者学习网

  }5AjHTML5中文学习网 - HTML5先行者学习网

  这样,主要的工作就已经完成了,在比较时可以使用5AjHTML5中文学习网 - HTML5先行者学习网

  account.Role == AccountRoleEnum.Admin 但是在涉及到数据库的查询时,这样的写法是会报错的,只能使用5AjHTML5中文学习网 - HTML5先行者学习网

  EntitiesContext db = new EntitiesContext(); db.Accounts.Where(c => c.Role.Value == (int)AccountRoleEnum.Admin);5AjHTML5中文学习网 - HTML5先行者学习网

(责任编辑:)
推荐书籍
推荐资讯
关于HTML5先行者 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 人才招聘 - 帮助