这里有新鲜出炉的精品教程, 程序狗速度看过来!
ASP.NET
ASP.NET 是. NET FrameWork 的一部分, 是一项微软公司的技术, 是一种使嵌入网页中的脚本可由因特网服务器执行的服务器端脚本技术, 它可以在通过 HTTP 请求文档时再在 web 服务器上动态创建它们 指 Active Server Pages(动态服务器页面) , 运行于 IIS(Internet Information Server 服务, 是 Windows 开发的 Web 服务器)之中的程序
这篇文章主要为大家详细介绍了 ASP.NET MVC5 网站开发之业务逻辑层的架构和基本功能, 感兴趣的小伙伴们可以参考一下
业务逻辑层在 Ninesky.Core 中实现, 主要功能封装一些方法通过调用数据存储层, 向界面层提供服务
一业务逻辑层的架构
Ninesky.Core 包含三个命名空间 Ninesky.CoreNinesky.Core.TypesNinesky.Core.General.
Ninesky.Core 包含模型和功能实现, Ninesky.Core.Types 是项目用到的一些类型的定义, Ninesky.Core.General 是项目用到的一些方法的定义
1Ninesky.Core 命名空间的结构
NineskyContext - 数据上下文
ContextFactory- 获取数据上下文的工厂类
BaseManager - 基础类, 实现了一些常用数据访问方法, 提供其他管理类继承
Category - 栏目模型
CategoryManager - 栏目管理类
Content - 内容模型
ContentManager - 内容管理类
User - 用户模型
UserManager - 用户管理类
Administrator - 管理员类
AdministratorManager - 管理员管理类
2Ninesky.Core.Types 命名空间的结构
Response 响应返回类
Paging<T> 分页数据类
二基础功能的实现
1 添加引用
(1)添加 EntityFramewok 引用
Ninesky.Core 项目 ->引用右键 >管理 NuGet 程序包
在 NuGet 包管理对器话框中选择 EntityFramewok 并安装
(2)添加 Ninesky.DataLibrary 项目的引用
Ninesky.Core 项目 ->引用右键 >添加引用
在引用管理器中选择 项目 ->解决方案 ->Ninesky.DataLibrary, 点击确定
2NineskyContext 类
NineskyContext 类是项目的数据数据上下文, 使模型和数据库的表进行对应
Ninesky.Core 项目右键 ->添加 ->类, 输入类名 NineskyContext
在类中引入命名空间 System.Data.Entity;
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.Data.Entity;
- namespace Ninesky.Core
- {
- public class NineskyContext:DbContext
- {
- public NineskyContext():base("DefaultConnection")
- {
- Database.SetInitializer<NineskyContext>(new CreateDatabaseIfNotExists<NineskyContext>());
- }
- }
- }
3ContextFactory 类
ContextFactory 是一个简单工厂类, CurrentContext()是一个静态函数, 用来获取当前线程 DbContext
Ninesky.Core 项目右键 ->添加 ->类, 输入类名 ContextFactory
在类中添加对 System.Runtime.Remoting.Messaging 的引用在类中实现 CurrentContext()静态方法返回数据上下文 NineskyContext 方法中通过 CallContext 类在线程中存储 NineskyContext
- using System.Runtime.Remoting.Messaging;
- namespace Ninesky.Core
- {
- /// <summary>
- /// 数据上下文工厂
- /// </summary>
- public class ContextFactory
- {
- /// <summary>
- /// 获取当前线程的数据上下文
- /// </summary>
- /// <returns > 数据上下文</returns>
- public static NineskyContext CurrentContext()
- {
- NineskyContext _nContext = CallContext.GetData("NineskyContext") as NineskyContext;
- if (_nContext == null)
- {
- _nContext = new NineskyContext();
- CallContext.SetData("NineskyContext", _nContext);
- }
- return _nContext;
- }
- }
- }
4Response 类
Response 类是一个常用的方法返回数据类型, 包含返回代码返回消息和返回数据 3 个属性
在 Ninesky.Core 项目 [右键] 新建文件夹, 输入名称 Types
在 Types 文件夹 [右键]-> 添加 ->类, 在弹出的添加新项对话框中输入类名 Response 代码如下:
- namespace Ninesky.Core.Types
- {
- /// <summary>
- ///
- /// </summary>
- public class Response
- {
- /// <summary>
- /// 返回代码. 0 - 失败, 1 - 成功, 其他 - 具体见方法返回值说明
- /// </summary>
- public int Code { get; set; }
- /// <summary>
- /// 返回消息
- /// </summary>
- public string Message { get; set; }
- /// <summary>
- /// 返回数据
- /// </summary>
- public dynamic Data { get; set; }
- public Response()
- {
- Code = 0;
- }
- }
- }
5Paging<T > 类
Paging<T > 类是一个查询分页数据时使用的类, 包含当前页每页记录数总记录数和当前页数据列表等几个属性
在 Types 文件夹 [右键]-> 添加 ->类, 在弹出的添加新项对话框中输入类名 Paging 代码如下:
- using System.Collections.Generic;
- namespace Ninesky.Core.Types
- {
- public class Paging<T>
- {
- /// <summary>
- /// 当前页从 1 计数
- /// </summary>
- public int PageIndex { get; set; }
- /// <summary>
- /// 每页记录数默认 20
- /// </summary>
- public int PageSize { get; set; }
- /// <summary>
- /// 总记录数
- /// </summary>
- public int TotalNumber;/// <summary>
- /// 当前页记录列表
- /// </summary>
- public List<T> Items { get; set; }
- public Paging()
- {
- PageIndex = 1;
- PageSize = 20;
- }
- }
- }
6BaseManager 类
BaseManager 类是所有管理类的基类, 此类包含了管理类的常用方法
将 Ninesky.Core 项目的 Class1.cs 重命名为 BaseManager.cs
引入命名空间 System.Data.Entity 和 Ninesky.Core.Types, 实现共有方法
- using Ninesky.Core.Types;
- using Ninesky.DataLibrary;
- using System.Data.Entity;
- using System.Linq;
- namespace Ninesky.Core
- {
- /// <summary>
- /// 管理类的基类
- /// </summary>
- /// <typeparam name="T">模型类</typeparam>
- public abstract class BaseManager<T> where T :class
- {
- /// <summary>
- /// 数据仓储类
- /// </summary>
- protected Repository<T> Repository;
- /// <summary>
- /// 默认构造函数
- /// </summary>
- public BaseManager():this(ContextFactory.CurrentContext())
- {
- }
- /// <summary>
- /// 构造函数
- /// </summary>
- /// <param name="dbContext">数据上下文</param>
- public BaseManager(DbContext dbContext){
- Repository = new Repository<T>(dbContext);
- }
- /// <summary>
- /// 添加
- /// </summary>
- /// <param name="entity">实体数据</param>
- /// <returns > 成功时属性 Data 为添加后的数据实体</returns>
- public virtual Response Add(T entity)
- {
- Response _response = new Response();
- if(Repository.Add(entity)>0)
- {
- _response.Code = 1;
- _response.Message = "添加数据成功!";
- _response.Data = entity;
- }
- else
- {
- _response.Code = 0;
- _response.Message = "添加数据失败!";
- }
- return _response;
- }
- /// <summary>
- /// 更新
- /// </summary>
- /// <param name="entity">实体数据</param>
- /// <returns > 成功时属性 Data 为更新后的数据实体</returns>
- public virtual Response Update(T entity)
- {
- Response _response = new Response();
- if (Repository.Update(entity) > 0)
- {
- _response.Code = 1;
- _response.Message = "更新数据成功!";
- _response.Data = entity;
- }
- else
- {
- _response.Code = 0;
- _response.Message = "更新数据失败!";
- }
- return _response;
- }
- /// <summary>
- /// 删除
- /// </summary>
- /// <param name="ID">主键</param>
- /// <returns>Code:0 - 删除失败; 1 - 删除陈功; 10 - 记录不存在</returns>
- public virtual Response Delete(int ID)
- {
- Response _response = new Response();
- var _entity = Find(ID);
- if (_entity == null)
- {
- _response.Code = 10;
- _response.Message = "记录不存在!";
- }
- else
- {
- if (Repository.Delete(_entity) > 0)
- {
- _response.Code = 1;
- _response.Message = "删除数据成功!";
- }
- else
- {
- _response.Code = 0;
- _response.Message = "删除数据失败!";
- }
- }
- return _response;
- }
- /// <summary>
- /// 查找实体
- /// </summary>
- /// <param name="ID">主键</param>
- /// <returns > 实体</returns>
- public virtual T Find(int ID)
- {
- return Repository.Find(ID);
- }
- /// <summary>
- /// 查找数据列表 - 所有数据
- /// </summary>
- /// <returns > 所有数据</returns>
- public IQueryable<T> FindList()
- {
- return Repository.FindList();
- }
- /// <summary>
- /// 查找分页数据
- /// </summary>
- /// <param name="paging">分页数据</param>
- /// <returns > 分页数据</returns>
- public Paging<T> FindPageList(Paging<T> paging)
- {
- paging.Items = Repository.FindPageList(paging.PageSize, paging.PageIndex, out paging.TotalNumber).ToList();
- return paging;
- }
- /// <summary>
- /// 总记录数
- /// </summary>
- /// <returns > 总记录数</returns>
- public virtual int Count()
- {
- return Repository.Count();
- }
- }
- }
- =====================================
代码见: https://ninesky.codeplex.com/SourceControl/latest
代码下载: https://ninesky.codeplex.com 点击 SOURCE CODE 点击 Download 下载源文件
来源: http://www.phperz.com/article/18/0309/352548.html