Welcome 微信登录

首页 / 网页编程 / ASP.NET / ASP.NET MVC 权限管理(二) 实体模型设计

ASP.NET MVC 权限管理(二) 实体模型设计2015-04-11上一篇文章写了关于项目的基本开发组织和项目用到的一些东西,这篇文章就开始设计实体模型了,好了,废话不多说。

一、实体模型基类

因为每个模型实体都需要有一个编号,状态这些基本的东西,为了遵守MVC的“不要重复自己”的原则,共有的东西就写到一个公共类去,以前开发我都是用自增的Int作为主键,这一次呢就打算试用一下GUID作为数据库的主键编号,要是有不懂的地方,大家赶紧指出来啊~~

有码有真相:

/// <summary>/// 模型基类/// </summary> public class BaseEntity{private string id;[Key][Display(Name = "主键")]public string Id{get{if (id == null){return Guid.NewGuid().ToString();}else{return id;}}set{id = value;}}[Display(Name = "状态")][Required(ErrorMessage = "状态不能为空!")]public bool Enabled { get; set; }}
二、实体模型

tbUser 【用户模型】

tbRole   【角色模型】

tbModule  【系统模块模型】

tbAction  【系统行为模型】

tbActionLog 【行为日志模型】

三、模型之间的关系

用户模型对应多个角色模型,角色模型对应多个用户模型,也就是说一个用户能属于多个角色,一个角色拥有N多个用户;

角色模型对应多个系统模型,也就是说一个角色拥有多个系统模块的权限。

系统行为模型和系统行为日志模型就是一个日志而已,大家看看肯定讷讷感懂的,我就不墨迹了。

四、数据访问接口层和数据访问实现层的公共类的实现

IBaseDao 数据访问接口层,代码如下:

/// <summary>/// 增删改查的公共接口,这个接口定义泛型的增删改查/// </summary>/// <typeparam name="T">实体</typeparam>public interface IBaseDao<T>{#region 查询普通实现方案(基于Lambda表达式的Where查询)/// <summary>/// 获取所有Entity/// </summary>/// <param name="exp">Lambda条件的where</param>/// <returns></returns>IEnumerable<T> GetAllEntities(Func<T, bool> exp);/// <summary>/// 计算总个数(分页用到)/// </summary>/// <param name="exp">Lambda条件的where</param>/// <returns></returns>int GetEntitiesCount(Func<T, bool> exp);/// <summary>/// 分页查询(Linq分页方式)/// </summary>/// <param name="pageNumber">当前页</param>/// <param name="pageSize">分页大小</param>/// <param name="orderName">lambda排序名称</param>/// <param name="sortOrder">排序,升序or降序</param>/// <param name="exp">lambda查询条件where</param>/// <returns></returns>IEnumerable<T> GetEntitiesForPaging(int pageNumber, int pageSize, Func<T, string> orderName, string sortOrder, Func<T, bool> exp);/// <summary>/// 根据条件查找单个实体/// </summary>/// <param name="exp">lambda查询条件where</param>/// <returns></returns>T GetEntity(Func<T, bool> exp);#endregion#region 添删改/// <summary>/// 插入实体/// </summary>/// <param name="entity"></param>/// <returns></returns>bool Insert(T entity);/// <summary>/// 更新实体/// </summary>/// <param name="entity"></param>/// <returns></returns>bool Update(T entity);/// <summary>/// 删除实体/// </summary>/// <param name="entity"></param>/// <returns></returns>bool Delete(T entity);#endregion}