using System.ComponentModel.DataAnnotations; namespace Ninesky.Models { /// <summary> /// 用户组 /// <remarks> /// 创建:2014.02.02 /// 修改:2014.02.08 /// </remarks> /// </summary> public class UserGroup { [Key] public int GroupID { get; set; } /// <summary> /// 名称 /// </summary> [Required(ErrorMessage="必填")] [StringLength(20, MinimumLength = 2, ErrorMessage = "{1}到{0}个字")] [Display(Name="名称")] public string Name { get; set; } /// <summary> /// 用户组类型<br /> /// 0普通类型(普通注册用户),1特权类型(像VIP之类的类型),3管理类型(管理权限的类型) /// </summary> [Required(ErrorMessage = "必填")] [Display(Name = "用户组类型")] public int GroupType { get; set; } /// <summary> /// 说明 /// </summary> [Required(ErrorMessage = "必填")] [StringLength(50, ErrorMessage = "少于{0}个字")] [Display(Name = "说明")] public string Description { get; set; } } }
3、用户配置模型类—UserConfig类
这个类是一些用户配置信息(暂时只考虑了注册设置),在后台管理员处进行设置。
using System.ComponentModel.DataAnnotations; namespace Ninesky.Models { /// <summary> /// 用户配置 /// <remarks> /// 创建:2014.02.06 /// </remarks> /// </summary> public class UserConfig { [Key] public int ConfigID { get; set; } /// <summary> /// 启用注册 /// </summary> [Display(Name = "启用注册")] [Required(ErrorMessage="必填")] public bool Enabled { get; set; } /// <summary> /// 禁止使用的用户名<br /> /// 用户名之间用“|”隔开 /// </summary> [Display(Name = "禁止使用的用户名")] public string ProhibitUserName { get; set; } /// <summary> /// 启用管理员验证 /// </summary> [Display(Name = "启用管理员验证")] [Required(ErrorMessage = "必填")] public bool EnableAdminVerify { get; set; } /// <summary> /// 启用邮件验证 /// </summary> [Display(Name = "启用邮件验证")] [Required(ErrorMessage = "必填")] public bool EnableEmailVerify { get; set; } /// <summary> /// 默认用户组Id /// </summary> [Display(Name = "默认用户组Id")] [Required(ErrorMessage = "必填")] public int DefaultGroupId { get; set; } } }
二、数据存储层
数据存储层负责与数据库打交道,由于使用了接口产生了两个项目DAL和IDAL。IDAL是接口项目,DAL是接口的实现项目。
在与数据库的方便有一些共同的操作,像添加、修改、删除、查询等。不想在实际写代码的时候在用户类写一遍这些东西,用户组类再写一遍、以后文章、评论都再重复写这些代码。怎么办,弄个基类。以后其他类从基类继承就把这些公共方法继承过来了。
1、IDAL项目
首先打开IDAL项目,添加类InterfaceBaseRepository,代码如下。
using System; using System.Linq; using System.Linq.Expressions; namespace Ninesky.IDAL { /// <summary> /// 接口基类 /// <remarks>创建:2014.02.03 <br /> /// 修改:2014.02.09</remarks> /// </summary> /// <typeparam>类型</typeparam> public interface InterfaceBaseRepository<T> { /// <summary> /// 添加 /// </summary> /// <param>数据实体</param> /// <returns>添加后的数据实体</returns> T Add(T entity); /// <summary> /// 查询记录数 /// </summary> /// <param>条件表达式</param> /// <returns>记录数</returns> int Count(Expression<Func<T, bool>> predicate); /// <summary> /// 更新 /// </summary> /// <param>数据实体</param> /// <returns>是否成功</returns> bool Update(T entity); /// <summary> /// 删除 /// </summary> /// <param>数据实体</param> /// <returns>是否成功</returns> bool Delete(T entity); /// <summary> /// 是否存在 /// </summary> /// <param>查询表达式</param> /// <returns>布尔值</returns> bool Exist(Expression<Func<T, bool>> anyLambda); /// <summary> /// 查询数据 /// </summary> /// <param>查询表达式</param> /// <returns>实体</returns> T Find(Expression<Func<T, bool>> whereLambda); /// <summary> /// 查找数据列表 /// </summary> /// <typeparam>排序</typeparam> /// <param>查询表达式</param> /// <param>是否升序</param> /// <param>排序表达式</param> /// <returns></returns> IQueryable<T> FindList<S>(Expression<Func<T, bool>> whereLamdba, bool isAsc, Expression<Func<T, S>> orderLamdba); /// <summary> /// 查找分页数据列表 /// </summary> /// <typeparam>排序</typeparam> /// <param>当前页</param> /// <param>每页记录数</param> /// <param>总记录数</param> /// <param>查询表达式</param> /// <param>是否升序</param> /// <param>排序表达式</param> /// <returns></returns> IQueryable<T> FindPageList<S>(int pageIndex, int pageSize, out int totalRecord, Expression<Func<T, bool>> whereLamdba, bool isAsc, Expression<Func<T, S>> orderLamdba); } }