码迷,mamicode.com
首页 > Web开发 > 详细

.NET MVC4 实训记录之三(EntityFramework 与枚举)

时间:2014-08-07 02:59:28      阅读:235      评论:0      收藏:0      [点我收藏+]

标签:des   style   blog   http   color   使用   os   io   

  EntityFramework对枚举的引入是从版本5开始的(如果没有记错的话)。枚举可以很大程度上提高对程序的可读性。那么在EntityFramework的CodeFirst模式下,如何使用枚举呢?答案很简单:还是那么用!

  看似废话,其实不然,看下面(修改上一篇中用户信息定义):

    /// <summary>
    /// 性别枚举
    /// </summary>
    public enum Gender
    {
        Male,
        Female
    }

    public class UserProfile
    {
        [Key]
        [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
        [Column(Order = 0)]
        public int UserId { get; set; }

        [Column(Order = 1)]
        [Required]
        public string UserName { get; set; }

        [Column(Order = 2)]
        public string UserCode { get; set; }

        [Column(Order = 3)]
        public int Status { get; set; }

        [Column(Order = 4)]
        public string Email { get; set; }

        [Column(Order = 5)]
        public Gender Gender { get; set; }

        [Column(Order = 6)]
        public int? CreatorId { get; set; }

        public virtual ICollection<Role> Roles { get; set; }

        public int? AddressId { get; set; }

        [ForeignKey("AddressId")]
        public Address Address { get; set; }

        public UserProfile()
        {
            Gender = Framework.DomainModels.Gender.Male;
        }
    }

  删除旧的数据库,重新运行项目,看看会有什么结果!

bubuko.com,布布扣

  好像没什么变化?--------确实没有什么变化!别着急,继续往下看!

  在AccountController中新增修改用户的Action,添加用户编辑视图。

/*  加载编辑页面的Action   */
        public ActionResult EditUser(int id)
        {
            var model = BaseService.GetSingle<UserProfile>(id);     //按照ID获取用户数据
            return View(model);
        }


/*  编辑页面视图  */
@model Framework.DomainModels.UserProfile
@{
    ViewBag.Title = "EditUser";
}

<h2>EditUser</h2>
@using (Html.BeginForm())
{
    @Html.EditorForModel();
}

  运行你的项目,输入连接http://localhost:****/Account/EditUser/1看看结果(注意,最后一个1是你已经注册的某个用户的ID,前提是你的路由配置要支持这种访问。其实就是创建项目时的默认路由配置)。

  bubuko.com,布布扣

  OK,枚举变量名已经显示,并非我们在数据库中看到的Int型的值。EF还是比较聪明的。其实这个字段应该显示为一个下拉列表,而并非文本框才最合理。

  一些思考:对于项目而言,并非是所有可以分类的字段都适合使用枚举类型。例如用户状态Status字段,我们可以用数字0表示用未激活,1表用户已激活。为使我们的代码开起来很优雅,然后就用枚举类型描述这个字段。当然这样做没有错,但是如果考虑到扩展性的话,这样做就是一个硬伤。假如我给用户状态增加一个“锁定”,表示用户已经登录,不能再在其它地方登录的话,就必须修改我们的枚举定义。那么这种情况下,建议还是使用普通的Int型(或字符型)字段比较好。虽然我们需要做一些判断将用户可读懂的状态信息显示,但比起修改类型定义带来的好处更多。往后我们还会继续讨论,如何让代码自动识别这些Int型(或字符型)的字段,将可读性更高的信息展示给用户(我自己都很期待噢)。

.NET MVC4 实训记录之三(EntityFramework 与枚举),布布扣,bubuko.com

.NET MVC4 实训记录之三(EntityFramework 与枚举)

标签:des   style   blog   http   color   使用   os   io   

原文地址:http://www.cnblogs.com/libra1006/p/3896132.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!