.NET MVC4 实训记录之三(EntityFramework 与枚举)
EntityFramework对枚举的引入是从版本5开始的(如果没有记错的话)。枚举可以很大程度上提高对程序的可读性。那么在EntityFramework的CodeFirst模式下,如何使用枚举呢?答案很简单:还是那么用!
看似废话,其实不然,看下面(修改上一篇中用户信息定义):
/// <summary>
/// 性别枚举
/// </summary>
public enum Gender
{
Male,
Female
} public class UserProfile
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
[Column(Order = )]
public int UserId { get; set; } [Column(Order = )]
[Required]
public string UserName { get; set; } [Column(Order = )]
public string UserCode { get; set; } [Column(Order = )]
public int Status { get; set; } [Column(Order = )]
public string Email { get; set; } [Column(Order = )]
public Gender Gender { get; set; } [Column(Order = )]
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;
}
}
删除旧的数据库,重新运行项目,看看会有什么结果!
aaarticlea/png;base64,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" alt="" />
好像没什么变化?--------确实没有什么变化!别着急,继续往下看!
在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,前提是你的路由配置要支持这种访问。其实就是创建项目时的默认路由配置)。
aaarticlea/png;base64,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" alt="" width="425" height="456" />
OK,枚举变量名已经显示,并非我们在数据库中看到的Int型的值。EF还是比较聪明的。其实这个字段应该显示为一个下拉列表,而并非文本框才最合理。
一些思考:对于项目而言,并非是所有可以分类的字段都适合使用枚举类型。例如用户状态Status字段,我们可以用数字0表示用未激活,1表用户已激活。为使我们的代码开起来很优雅,然后就用枚举类型描述这个字段。当然这样做没有错,但是如果考虑到扩展性的话,这样做就是一个硬伤。假如我给用户状态增加一个“锁定”,表示用户已经登录,不能再在其它地方登录的话,就必须修改我们的枚举定义。那么这种情况下,建议还是使用普通的Int型(或字符型)字段比较好。虽然我们需要做一些判断将用户可读懂的状态信息显示,但比起修改类型定义带来的好处更多。往后我们还会继续讨论,如何让代码自动识别这些Int型(或字符型)的字段,将可读性更高的信息展示给用户(我自己都很期待噢)。
.NET MVC4 实训记录之三(EntityFramework 与枚举)的更多相关文章
- .NET MVC4 实训记录之四(Unit of work + Repository)
今日后开启进阶模式! 谈到MVC与EntityFramework,则不得不说一说事务与仓储(Unit of work + Repository). 仓储(Repository):领域对象集合.用于操作 ...
- .NET MVC4 实训记录之二(扩展WebSecurity模型下的UserProfile表)
使用VS2013创建MVC4项目后,自动生成的代码中默认使用WebSecurity模型创建用户管理,生成以下数据库:
- .NET MVC4 实训记录之六(利用ModelMetadata实现资源的自主访问)
上一篇我们已经实现自定义资源文件的访问,该篇我们使用它配合ModelMetadata实现资源文件的自主访问.这样做是为了我们能更简单的用MVC原生的方式使用资源文件.由于我的文章旨在记录MVC项目的实 ...
- .NET MVC4 实训记录之一(引入Unity3.0 Ioc框架)
一直在做维护项目,没有机会接触完整的架构,于是自学.NET MVC.自今日起,将自学的过程.遇到的问题以及解决方案记录下来. 在WebApp项目中右键,使用NuGet引入Unity3.0.
- .NET MVC4 实训记录之七(实现资源的自主访问后续)
我们在上一篇中讨论了如何利用ModelMetadata实现国际化资源文件访问,但也留下了一些问题,即:如何利用ModelMetadata实现相同类型的属性信息的个性化资源显示.本人没有找到合适的方案, ...
- .NET MVC4 实训记录之五(访问自定义资源文件)
.Net平台下工作好几年了,资源文件么,大多数使用的是.resx文件.它是个好东西,很容易上手,工作效率高,性能稳定.使用.resx文件,会在编译期动态生成已文件名命名的静态类,因此它的访问速度当然是 ...
- 实训任务05 MapReduce获取成绩表的最高分记录
实训任务05 MapReduce获取成绩表的最高分记录 实训1:统计用户纺问次数 任务描述: 统计用户在2016年度每个自然日的总访问次数.原始数据文件中提供了用户名称与访问日期.这个任务就是要获取 ...
- UML基础与Rose建模实训教程
目 录 第1章 初识UML. 1 1.1 初识UML用例图... 1 1.2 初识UML类图... 3 第2章 Rational Rose工具... 6 2.1 安装与配置Rational Ro ...
- <实训|第四天>Linux下的vim你真的掌握了吗?附上ftp远程命令上传。
期待已久的linux运维.oracle"培训班"终于开班了,我从已经开始长期四个半月的linux运维.oracle培训,每天白天我会好好学习,晚上回来我会努力更新教程,包括今天学到 ...
随机推荐
- Dojo Mobile制定学习用品
Dojo Mobile开展 App技术开发QQ群:347072638 技术咨询.APP定制开发联系邮箱:messageloop@qq.com 时代在演变.技术在革新.无论你接受不接受. 初识Dojo ...
- 对“demo!demo.Index+HookProc::Invoke”垃圾收集的类型已委托回调。这可能会导致应用程序崩溃、损坏和数据丢失。当传递委托给非托管代码,托管应用程序必须让这些委托保持活着
对"demo!demo.Index+HookProc::Invoke"垃圾收集的类型已委托回调.这可能会导致应用程序崩溃.损坏和数据丢失.当传递委托给非托管代码,托管应用程序必须承 ...
- hdu 4445 Crazy Tank (暴力枚举)
Crazy Tank Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total ...
- Topshelf创建Windows服务
使用Topshelf创建Windows服务 概述 Topshelf是创建Windows服务的另一种方法,老外的一篇文章Create a .NET Windows Service in 5 steps ...
- 在四川大学的第二个冠军游戏在线编程:Peter的X
四川大学线下编程比赛第二题:Peter的X 公布公司: 有 效 期: CSDN 2014-09-27至2015-09-26 难 度 等 级: 答 题 时 长: 编程语言要求: 120分钟 C C++ ...
- 至尊快速,国产语言RPP 1.83强势来袭
以下是 R++的性能測试数据:(奔腾 1.86GHZ,測试 3 次取平均值) 执行效率: R++的内部结构和 C++大致同样,所以理论上 R++能够达到和 C++一样的执行速度,眼下 R++已开启汇编 ...
- android进度条
android进度条 1.达到的效果 2.布局代码 先写一个my_browser.xml文件 存放WebView <?xml version="1.0" encoding=& ...
- SQL字符串转换为数组
/*一.按指定符号分割字符串,返回分割后的元素个数,方法很简单,就是看字符串中存在多少个分隔符号,然后再加一,就是要求的结果. -----rtrim(@str)去掉 @str右边的字符 ltrim(@ ...
- ocp11g培训内部教材_053课堂笔记(043)_数据备份
053:数据库高级管理: 目录 第一部分:数据库备份与恢复... 4 第一章:备份恢复概述... 4 1.1 备份的意义: 4 1.2 数据库故障的类型:... 4 1.3 制定你的备份和恢复的计划. ...
- Windows Phone 8.1 应用生命周期
原文:Windows Phone 8.1 应用生命周期 一.“后退键”不会终止应用 关于 Windows Phone 8.1 的应用生命周期,第一个要知道的关键就是:“后退键”不会终止应用! 在 8. ...