本篇文章主要介绍了"MVC5 网站开发实践 2、后台管理",对于.NETjrs看球网直播吧_低调看直播体育app软件下载_低调看体育直播感兴趣的同学可以参考一下:
目录 MVC5 网站开发实践 概述 MVC5 网站开发实践 1、建立项目 从这一部分开始做后台管理,首先是基本框架的 一、Data项目 1、项目...
目录
MVC5 网站开发实践 概述
MVC5 网站开发实践 1、建立项目
从这一部分开始做后台管理,首先是基本框架的
一、Data项目
1、项目添加EntityFramework引用
在Data项目的引用上右键-> 管理NuGet程序包。

在弹出的窗口中选择 EntityFramework 安装

2、添加排序枚举
在Data项目上点右键新建文件夹Type。在文件夹内添加类【OrderType】,代码如下
//创建2014.12.8
namespace Data.Types
{
///
/// 排序类型
///
public enum OrderType
{
///
/// 不排序
///
No,
///
/// 正序
///
Asc,
///
/// 倒序
///
Desc
}
}
3、添加数据访问类
在Data项目上点右键新建类输入类名【BaseRepository】,这个类主要负责数数据的存取。
类内添加私有成员DbContext _baseDbContext用来在数据库进行增、删、改和查询。
BaseRepository有两个构造函数public BaseRepository()和public BaseRepository(string nameOrConnectionString)。第一个构造函数使用"NineskyConnection"名称的数据连接名称连接到数据库,第二个构造函数可以设置数据库连接名称或连接字符串。在该类中写了一些数据的增删改和查询方法。整个代码如下。
using Ninesky.Data.Types;
using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.Linq;
using System.Linq.Expressions;
namespace Ninesky.Data
{
///
/// 数据仓储基类
///
/// 创建:2014.12.13
///
///
///
public class BaseRepository where T : class
{
private DbContext _baseDbContext;
///
/// 构造函数
///
/// 数据上下文
public BaseRepository(DbContext dbContext)
{
_baseDbContext = dbContext;
}
///
/// 添加
///
/// 数据实体
/// 是否立即保存
///
public T Add(T entity, bool isSave = true)
{
_baseDbContext.Set().Add(entity);
if (isSave) _baseDbContext.SaveChanges();
return entity;
}
///
/// 批量添加【立即执行】
///
/// 数据列表
/// 添加的记录数
public int AddRange(IEnumerable entities, bool isSave = true)
{
_baseDbContext.Set().AddRange(entities);
return isSave ? _baseDbContext.SaveChanges() : 0;
}
///
/// 修改
///
/// 数据实体
/// 是否立即保存
///
public bool Update(T entity, bool isSave = true)
{
_baseDbContext.Set().Attach(entity);
_baseDbContext.Entry(entity).State = EntityState.Modified;
return isSave ? _baseDbContext.SaveChanges() > 0 : true;
}
///
/// 删除
///
/// 数据实体
/// 是否立即保存
///
public bool Delete(T entity, bool isSave = true)
{
_baseDbContext.Set().Attach(entity);
_baseDbContext.Entry(entity).State = EntityState.Deleted;
return isSave ? _baseDbContext.SaveChanges() > 0 : true;
}
///
/// 批量删除
///
/// 数据列表
/// 是否立即保存
/// 删除的记录数
public int DeleteRange(IEnumerable entities, bool isSave = true)
{
_baseDbContext.Set().RemoveRange(entities);
return isSave ? _baseDbContext.SaveChanges() : 0;
}
///
/// 保存
///
/// 受影响的记录数
public int Save()
{
return _baseDbContext.SaveChanges();
}
///
/// 是否有满足条件的记录
///
/// 条件表达式
///
public bool Any(Expression<>bool>> anyLamdba)
{
return _baseDbContext.Set().Any(anyLamdba);
}
///
/// 查询记录数
///
/// 查询表达式
/// 记录数
public int Count(Expression<>bool>> countLamdba)
{
return _baseDbContext.Set().Count(countLamdba);
}
///
/// 查找实体
///
/// 实体ID
///
public T Find(int ID)
{
return _baseDbContext.Set().Find(ID);
}
///
/// 查找实体
///
/// Lambda表达式
///
public T Find(Expression<>bool>> findLambda)
{
return _baseDbContext.Set().SingleOrDefault(findLambda);
}
///
/// 查找所有列表
///
///
public IQueryable FindAll()
{
return FindList<int>(0, T => true, OrderType.No, null);
}
///
/// 查找数据列表
///
/// 返回的记录数【0-返回所有】
/// 查询条件
/// 排序方式
/// 排序条件
///
public IQueryable FindList(int number, Expression<>bool>> whereLandba, OrderType orderType, Expression<>> orderLandba)
{
IQueryable _tIQueryable = _baseDbContext.Set().Where(whereLandba);
switch (orderType)
{
case OrderType.Asc:
_tIQueryable = _tIQueryable.OrderBy(orderLandba);
break;
case OrderType.Desc:
_tIQueryable = _tIQueryable.OrderByDescending(whereLandba);
break;
}
if (number > 0) _tIQueryable = _tIQueryable.Take(number);
return _tIQueryable;
}
///
///
///
/// 排序字段类型
/// 页码【从1开始】
/// 每页记录数
/// 总记录数
/// 查询表达式
/// 排序类型
/// 排序表达式
///
public IQueryable FindPageList(int pageIndex, int pageNumber, out int totalNumber, Expression<>bool>> whereLandba, OrderType orderType, Expression<>> orderLandba)
{
IQueryable _tIQueryable = _baseDbContext.Set().Where(whereLandba);
totalNumber = _tIQueryable.Count();
switch (orderType)
{
case OrderType.Asc:
_tIQueryable = _tIQueryable.OrderBy(orderLandba);
break;
case OrderType.Desc:
_tIQueryable = _tIQueryable.OrderByDescending(whereLandba);
break;
}
_tIQueryable = _tIQueryable.Skip((pageIndex - 1) * pageNumber).Take(pageNumber);
return _tIQueryable;
}
}
}
4、添加业务逻辑基类
在data项目右键添加【BaseService】,此类通过调用BaseRepository进行数据处理,作为业务逻辑的基类,其他业务类继承自此类。这个类的方法与BaseRepository比较相似,建立此类的主要体现分层的思路,一些数据访问的异常处理应该放在此类中。代码如下:
using Ninesky.Data.Types;
using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.Linq;
using System.Linq.Expressions;
namespace Ninesky.Data
{
///
/// 业务逻辑基类
///
/// 创建:2014.12.13
///
///
public class BaseService where T : class
{
private BaseRepository _baseRepository;
///
/// 创建业务逻辑类
///
/// 数据上下文
public BaseService(DbContext dbContext)
{
_baseRepository = new BaseRepository(dbContext);
}
///
/// 添加
///
/// 数据实体
/// 添加后的数据实体
public T Add(T entity, bool isSave = true)
{
return _baseRepository.Add(entity, isSave);
}
/////
///// 添加【必须先实例化才能使用】
/////
///// 数据实体
///// 添加后的记录ID
//public virtual int Add(T entity) { return 0; }
///
/// 批量添加
///
/// 数据列表
/// 是否立即保存
///
public int AddRange(IEnumerable entities, bool isSave = true)
{
return _baseRepository.AddRange(entities, isSave);
}
///
/// 修改
///
/// 数据实体
/// 是否立即保存
///
public bool Update(T entity, bool isSave = true)
{
return _baseRepository.Update(entity, isSave);
}
///
/// 删除
///
/// 数据实体
/// 是否立即保存
///
public bool Delete(T entity, bool isSave = true)
{
return _baseRepository.Delete(entity, isSave);
}
///
/// 批量删除
///
/// 数据列表
/// 是否立即保存
/// 删除的记录数
public int DeleteRange(IEnumerable entities, bool isSave = true)
{
return _baseRepository.DeleteRange(entities, isSave);
}
///
/// 保存
///
/// 受影响的记录数
public int Save()
{
return _baseRepository.Save();
}
///
/// 查询记录数
///
/// 查询表达式
/// 记录数
public int Count(Expression<>bool>> countLamdba)
{
return _baseRepository.Count(countLamdba);
}
///
/// 查找实体
///
/// 实体ID
///
public T Find(int ID)
{
return _baseRepository.Find(ID);
}
///
/// 查找实体
///
/// Lambda表达式
///
public T Find(Expression<>bool>> findLambda)
{
return _baseRepository.Find(findLambda);
}
///
/// 查找所有列表
///
///
public IQueryable FindAll()
{
return _baseRepository.FindAll();
}
///
/// 查找数据列表
///
/// 返回的记录数【0-返回所有】
/// 查询条件
/// 排序方式
/// 排序条件
///
public IQueryable FindList(int number, Expression<>bool>> whereLandba, OrderType orderType, Expression<>> orderLandba)
{
return _baseRepository.FindList(number, whereLandba, orderType, orderLandba);
}
///
///
///
/// 排序字段类型
/// 页码【从1开始】
/// 每页记录数
/// 总记录数
/// 查询表达式
/// 排序类型
/// 排序表达式
///
public IQueryable FindPageList(int pageIndex, int pageNumber, out int totalNumber, Expression<>bool>> whereLandba, OrderType orderType, Expression<>> orderLandba)
{
return FindPageList(pageIndex, pageNumber, out totalNumber, whereLandba, orderType, orderLandba);
}
}
}
二、User项目
1、建立管理员模型
在User项目的引用上点右键添加System.ComponentModel.DataAnnotations的引用和Ninesky.Data项目、E的引用。

在User项目上点右键新建文件夹Models,在文件夹中添加类Administrator。代码如下:
using System;
using System.ComponentModel.DataAnnotations;
namespace Ninesky.User.Models
{
///
/// 管理员模型
///
/// 创建:2014.12.13
///
///
public class Administrator
{
[Key]
public int AdministratorID { get; set; }
///
/// 管理员账号
///
[Required(ErrorMessage = "必须输入{0}")]
[Display(Name = "管理员账号")]
public string Account { get; set; }
///
/// 管理员名称
///
[Required(ErrorMessage = "必须输入{0}")]
[Display(Name = "管理员名称")]
public string Name { get; set; }
///
/// 密码
///
[Required(ErrorMessage = "必须输入{0}")]
[Display(Name = "密码")]
[DataType(DataType.Password)]
public string Password { get; set; }
///
/// 创建时间
///
public DateTime CreateDate { get; set; }
///
/// 上次登陆Ip
///
public string LoginIp { get; set; }
///
/// 上次登陆日期
///
public Nullable LoginTime { get; set; }
}
}
2、建立管理员业务逻辑类
在User项目上点右键添加AdministratorService类,该类继承自BaseService。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Ninesky.Data;
using Ninesky.User.Models;
namespace Ninesky.User
{
///
/// 管理员业务逻辑类
///
/// 创建:2014.12.13
///
///
public class AdministratorService:BaseService
{ public AdministratorService(DbContext dbContext) : base(dbContext) { }
}
}
三、Website项目
1、添加User项目的引用上右键添加对User项目的引用。
2、建立数据上下文
在Site项目上点右键添加类【NineskyDbContext】,继承自DbContext
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data.Entity;
using Ninesky.User.Models;
namespace Ninesky.Website
{
///
/// 网站数据上下文
///
/// 创建:2014.12.13
///
///
public class NineskyDbContext : DbContext
{
public DbSet Administrators { get; set; }
public NineskyDbContext()
: base("name=NineskyConnection")
{
Database.SetInitializer(new CreateDatabaseIfNotExists());
}
}
}
3、建立数据库连接
打开Web.config文件,在之间添加数据库的连接
<connectionStrings>
<add name="NineskyConnection" connectionString="Data Source=(LocalDb)\v11.0;AttachDbFilename=|DataDirectory|\Ninesky.mdf;Initial Catalog=Ninesky;Integrated Security=True;MultipleActiveResultSets=True" providerName="System.Data.SqlClient" />
connectionStrings>
4、建立简单工厂
在Website项目上点右键添加类【ContextFactory】,代码如下:
using System.Runtime.Remoting.Messaging;
namespace Ninesky.Website
{
///
/// 上下文简单工厂
///
/// 创建:2014.12.13
///
///
public class ContextFactory
{
///
/// 获取当前数据上下文
///
/// 数据上下文
public static NineskyDbContext GetCurrentContext()
{
NineskyDbContext _nineskyDbContext = CallContext.GetData("NineskyDbContext") as NineskyDbContext;
if (_nineskyDbContext == null)
{
_nineskyDbContext = new NineskyDbContext();
CallContext.SetData("NineskyDbContext", _nineskyDbContext);
}
return _nineskyDbContext;
}
}
}
5、Config区域主界面
在Site项目的Config区域的Controller文件夹上点右键添加Home控制器,类型选择【MVC5控制器-空】。在添加的控制器中添加【Index】 action
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
namespace Ninesky.Website.Areas.Config.Controllers
{
///
/// 主界面
///
/// 创建:2014.12.13
///
///
public class HomeController : Controller
{
// GET: Config/Home
public ActionResult Index()
{
return View();
}
}
}
在Config区域Views/Share文件夹添加布局页【_Layout.cshtml】
在Index action上右键添加一个空视图

===========================
代码下载:http://pan.baidu.com/s/1sj6Ya2D
以上就介绍了MVC5 网站开发实践 2、后台管理,包括了方面的内容,希望对.NETjrs看球网直播吧_低调看直播体育app软件下载_低调看体育直播有兴趣的朋友有所帮助。
本文网址链接:http://www.codes51.com/article/detail_99092.html
相关图片
相关文章