using System;
using System.ComponentModel.DataAnnotations;
namespace Ninesky.Models
{
/// <summary>
/// 用户模型
/// <remarks>
/// 创建:2014.02.02<br />
/// 修改:2014.02.05
/// </remarks>
/// </summary>
public class User
{
[Key]
public int UserID { get; set; }
/// <summary>
/// 用户名
/// </summary>
[Required(ErrorMessage="必填")]
[StringLength(20,MinimumLength=4,ErrorMessage="{1}到{0}个字符")]
[Display(Name="用户名")]
public string UserName { get; set; }
/// <summary>
/// 用户组ID
/// </summary>
[Required(ErrorMessage = "必填")]
[Display(Name = "用户组ID")]
public int GroupID { get; set; }
/// <summary>
/// 显示名
/// </summary>
[Required(ErrorMessage = "必填")]
[StringLength(20, MinimumLength = 2, ErrorMessage = "{1}到{0}个字符")]
[Display(Name = "显示名")]
public string DisplayName { get; set; }
/// <summary>
/// 密码
/// </summary>
[Required(ErrorMessage = "必填")]
[Display(Name = "密码")]
[DataType(DataType.Password)]
public string Password { get; set; }
/// <summary>
/// 邮箱
/// </summary>
[Required(ErrorMessage = "必填")]
[Display(Name = "邮箱")]
[DataType(DataType.EmailAddress)]
public string Email { get; set; }
/// <summary>
/// 用户状态<br />
/// 0正常,1锁定,2未通过邮件验证,3未通过管理员
/// </summary>
public int Status { get; set; }
/// <summary>
/// 注册时间
/// </summary>
public DateTime RegistrationTime { get; set; }
/// <summary>
/// 上次登陆时间
/// </summary>
public DateTime LoginTime { get; set; }
/// <summary>
/// 上次登陆IP
/// </summary>
public DateTime LoginIP { get; set; }
public virtual UserGroup Group { get; set; }
}
}
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; }
}
}
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; }
}
}
using System;
using System.Linq;
using System.Linq.Expressions;
namespace Ninesky.IDAL
{
/// <summary>
/// 接口基类
/// <remarks>创建:2014.02.03 <br />
/// 修改:2014.02.09</remarks>
/// </summary>
/// <typeparam name="T">类型</typeparam>
public interface InterfaceBaseRepository<T>
{
/// <summary>
/// 添加
/// </summary>
/// <param name="entity">数据实体</param>
/// <returns>添加后的数据实体</returns>
T Add(T entity);
/// <summary>
/// 查询记录数
/// </summary>
/// <param name="predicate">条件表达式</param>
/// <returns>记录数</returns>
int Count(Expression<Func<T, bool>> predicate);
/// <summary>
/// 更新
/// </summary>
/// <param name="entity">数据实体</param>
/// <returns>是否成功</returns>
bool Update(T entity);
/// <summary>
/// 删除
/// </summary>
/// <param name="entity">数据实体</param>
/// <returns>是否成功</returns>
bool Delete(T entity);
/// <summary>
/// 是否存在
/// </summary>
/// <param name="anyLambda">查询表达式</param>
/// <returns>布尔值</returns>
bool Exist(Expression<Func<T, bool>> anyLambda);
/// <summary>
/// 查询数据
/// </summary>
/// <param name="whereLambda">查询表达式</param>
/// <returns>实体</returns>
T Find(Expression<Func<T, bool>> whereLambda);
/// <summary>
/// 查找数据列表
/// </summary>
/// <typeparam name="S">排序</typeparam>
/// <param name="whereLamdba">查询表达式</param>
/// <param name="isAsc">是否升序</param>
/// <param name="orderLamdba">排序表达式</param>
/// <returns></returns>
IQueryable<T> FindList<S>(Expression<Func<T, bool>> whereLamdba, bool isAsc, Expression<Func<T, S>> orderLamdba);
/// <summary>
/// 查找分页数据列表
/// </summary>
/// <typeparam name="S">排序</typeparam>
/// <param name="pageIndex">当前页</param>
/// <param name="pageSize">每页记录数</param>
/// <param name="totalRecord">总记录数</param>
/// <param name="whereLamdba">查询表达式</param>
/// <param name="isAsc">是否升序</param>
/// <param name="orderLamdba">排序表达式</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);
}
}
using Ninesky.Models;
namespace Ninesky.IDAL
{
/// <summary>
/// 用户接口
/// <remarks>创建:2014.02.03</remarks>
/// </summary>
public interface InterfaceUserRepository:InterfaceBaseRepository<User>
{
}
}
using Ninesky.Models;
using System.Data.Entity;
namespace Ninesky.DAL
{
/// <summary>
/// 数据上下文
/// <remarks>创建:2014.02.03</remarks>
/// </summary>
public class NineskyDbContext:DbContext
{
public DbSet<User> Users { get; set; }
public DbSet<UserGroup> UserGroups { get; set; }
public DbSet<UserConfig> UserConfig { get; set; }
public NineskyDbContext()
: base("DefaultConnection")
{
}
}
}
using Ninesky.IDAL;
using System;
using System.Linq;
using System.Linq.Expressions;
namespace Ninesky.DAL
{
/// <summary>
/// 仓储基类
/// <remarks>创建:2014.02.03</remarks>
/// </summary>
public class BaseRepository<T>: InterfaceBaseRepository<T> where T : class
{
protected NineskyDbContext nContext = ContextFactory.GetCurrentContext();
public T Add(T entity)
{
nContext.Entry<T>(entity).State = System.Data.Entity.EntityState.Added;
nContext.SaveChanges();
return entity;
}
public int Count(Expression<Func<T, bool>> predicate)
{
return nContext.Set<T>().Count(predicate);
}
public bool Update(T entity)
{
nContext.Set<T>().Attach(entity);
nContext.Entry<T>(entity).State = System.Data.Entity.EntityState.Modified;
return nContext.SaveChanges() > 0;
}
public bool Delete(T entity)
{
nContext.Set<T>().Attach(entity);
nContext.Entry<T>(entity).State = System.Data.Entity.EntityState.Deleted;
return nContext.SaveChanges() > 0;
}
public bool Exist(Expression<Func<T, bool>> anyLambda)
{
return nContext.Set<T>().Any(anyLambda);
}
public T Find(Expression<Func<T, bool>> whereLambda)
{
T _entity = nContext.Set<T>().FirstOrDefault<T>(whereLambda);
return _entity;
}
public IQueryable<T> FindList<S>(Expression<Func<T, bool>> whereLamdba, bool isAsc, Expression<Func<T, S>> orderLamdba)
{
var _list = nContext.Set<T>().Where<T>(whereLamdba);
if (isAsc) _list = _list.OrderBy<T, S>(orderLamdba);
else _list = _list.OrderByDescending<T, S>(orderLamdba);
return _list;
}
public IQueryable<T> FindPageList<S>(int pageIndex, int pageSize, out int totalRecord, Expression<Func<T, bool>> whereLamdba, bool isAsc, Expression<Func<T, S>> orderLamdba)
{
var _list = nContext.Set<T>().Where<T>(whereLamdba);
totalRecord = _list.Count();
if (isAsc) _list = _list.OrderBy<T, S>(orderLamdba).Skip<T>((pageIndex - 1) * pageSize).Take<T>(pageSize);
else _list = _list.OrderByDescending<T, S>(orderLamdba).Skip<T>((pageIndex - 1) * pageSize).Take<T>(pageSize);
return _list;
}
}
}
using System.Data.Entity;
using System.Runtime.Remoting.Messaging;
namespace Ninesky.DAL
{
/// <summary>
/// 上下文简单工厂
/// <remarks>
/// 创建:2014.02.05
/// </remarks>
/// </summary>
public class ContextFactory
{
/// <summary>
/// 获取当前数据上下文
/// </summary>
/// <returns></returns>
public static NineskyDbContext GetCurrentContext()
{
NineskyDbContext _nContext = CallContext.GetData("NineskyContext") as NineskyDbContext;
if (_nContext == null)
{
_nContext = new NineskyDbContext();
CallContext.SetData("NineskyContext", _nContext);
}
return _nContext;
}
}
}
using Ninesky.IDAL;
using Ninesky.Models;
using System.Linq;
namespace Ninesky.DAL
{
/// <summary>
/// 用户仓库
/// <remarks>创建:2014.02.03</remarks>
/// </summary>
class UserRepository: BaseRepository<User>, InterfaceUserRepository
{
}
}
using Ninesky.IDAL;
namespace Ninesky.DAL
{
/// <summary>
/// 简单工厂?
/// <remarks>创建:2014.02.03</remarks>
/// </summary>
public static class RepositoryFactory
{
/// <summary>
/// 用户仓储
/// </summary>
public static InterfaceUserRepository UserRepository { get { return new UserRepository(); } }
}
}
namespace Ninesky.IBLL
{
/// <summary>
/// 接口基类
/// <remarks>创建:2014.02.03</remarks>
/// </summary>
public interface InterfaceBaseService<T> where T : class
{
/// <summary>
/// 添加
/// </summary>
/// <param name="entity">数据实体</param>
/// <returns>添加后的数据实体</returns>
T Add(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);
}
}
using Ninesky.Models;
using System.Linq;
namespace Ninesky.IBLL
{
/// <summary>
/// 用户相关接口
/// <remarks>
/// 创建:2014.02.09
/// </remarks>
/// </summary>
public interface InterfaceUserService:InterfaceBaseService<User>
{
/// <summary>
/// 用户是否存在
/// </summary>
/// <param name="userName">用户名</param>
/// <returns>布尔值</returns>
bool Exist(string userName);
/// <summary>
/// 查找用户
/// </summary>
/// <param name="userID">用户ID</param>
/// <returns></returns>
User Find(int userID);
/// <summary>
/// 查找用户
/// </summary>
/// <param name="userName">用户名</param>
/// <returns></returns>
User Find(string userName);
/// <summary>
/// 用户列表
/// </summary>
/// <param name="pageIndex">页码数</param>
/// <param name="pageSize">每页记录数</param>
/// <param name="totalRecord">总记录数</param>
/// <param name="order">排序:0-ID升序(默认),1ID降序,2注册时间升序,3注册时间降序,4登录时间升序,5登录时间降序</param>
/// <returns></returns>
IQueryable<User> FindPageList(int pageIndex, int pageSize, out int totalRecord,int order);
}
}
using Ninesky.IBLL;
using Ninesky.IDAL;
namespace Ninesky.BLL
{
/// <summary>
/// 服务基类
/// <remarks>创建:2014.02.03</remarks>
/// </summary>
public abstract class BaseService<T> : InterfaceBaseService<T> where T : class
{
protected InterfaceBaseRepository<T> CurrentRepository { get; set; }
public BaseService(InterfaceBaseRepository<T> currentRepository) { CurrentRepository = currentRepository; }
public T Add(T entity) { return CurrentRepository.Add(entity); }
public bool Update(T entity) { return CurrentRepository.Update(entity); }
public bool Delete(T entity) { return CurrentRepository.Delete(entity); }
}
}
using Ninesky.DAL;
using Ninesky.IBLL;
using Ninesky.Models;
using System.Linq;
namespace Ninesky.BLL
{
/// <summary>
/// 用户服务类
/// <remarks>
/// 创建:2014.02.12
/// </remarks>
/// </summary>
public class UserService:BaseService<User>,InterfaceUserService
{
public UserService() : base(RepositoryFactory.UserRepository) { }
public bool Exist(string userName) { return CurrentRepository.Exist(u => u.UserName == userName);}
public User Find(int userID) { return CurrentRepository.Find(u => u.UserID == userID); }
public User Find(string userName) { return CurrentRepository.Find(u => u.UserName == userName); }
public IQueryable<User> FindPageList(int pageIndex, int pageSize, out int totalRecord, int order)
{
switch(order)
{
case 0: return CurrentRepository.FindPageList(pageIndex, pageSize, out totalRecord, u => true, true, u => u.UserID);
case 1: return CurrentRepository.FindPageList(pageIndex, pageSize, out totalRecord, u => true, false, u => u.UserID);
case 2: return CurrentRepository.FindPageList(pageIndex, pageSize, out totalRecord, u => true, true, u => u.RegistrationTime);
case 3: return CurrentRepository.FindPageList(pageIndex, pageSize, out totalRecord, u => true, false, u => u.RegistrationTime);
case 4: return CurrentRepository.FindPageList(pageIndex, pageSize, out totalRecord, u => true, true, u => u.LoginTime);
case 5: return CurrentRepository.FindPageList(pageIndex, pageSize, out totalRecord, u => true, false, u => u.LoginTime);
default: return CurrentRepository.FindPageList(pageIndex, pageSize, out totalRecord, u => true, true, u => u.UserID);
}
}
}
}
/// <summary>
/// 排序
/// </summary>
/// <typeparam name="T">类型</typeparam>
/// <param name="source">原IQueryable</param>
/// <param name="propertyName">排序属性名</param>
/// <param name="isAsc">是否正序</param>
/// <returns>排序后的IQueryable<T></returns>
private IQueryable<T> OrderBy(IQueryable<T> source, string propertyName, bool isAsc)
{
if (source == null) throw new ArgumentNullException("source", "不能为空");
if (string.IsNullOrEmpty(propertyName)) return source;
var _parameter = Expression.Parameter(source.ElementType);
var _property = Expression.Property(_parameter, propertyName);
if (_property == null) throw new ArgumentNullException("propertyName", "属性不存在");
var _lambda = Expression.Lambda(_property, _parameter);
var _methodName = isAsc ? "OrderBy" : "OrderByDescending";
var _resultExpression = Expression.Call(typeof(Queryable), _methodName, new Type[] { source.ElementType, _property.Type }, source.Expression, Expression.Quote(_lambda));
return source.Provider.CreateQuery<T>(_resultExpression);
}
修改FindList和FindPageList方法,修改下图
image
3、修改UserService的FindPageList方法
修改后的代码如下:
public IQueryable<User> FindPageList(int pageIndex, int pageSize, out int totalRecord, int order)
{
bool _isAsc = true;
string _orderName = string.Empty;
switch(order)
{
case 0:
_isAsc = true;
_orderName = "UserID";
break;
case 1:
_isAsc = false;
_orderName = "UserID";
break;
case 2:
_isAsc = true;
_orderName = "RegistrationTime";
break;
case 3:
_isAsc = false;
_orderName = "RegistrationTime";
break;
case 4:
_isAsc = true;
_orderName = "LoginTime";
break;
case 5: _isAsc = false;
_orderName = "LoginTime";
break;
default:
_isAsc = false;
_orderName = "UserID";
break;
}
return CurrentRepository.FindPageList(pageIndex, pageSize, out totalRecord, u => true, _orderName, _isAsc);
}
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有