版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/weixin_36792339/article/details/82798170
一、搭建方式
两个项目用公共操作数据类
方式一:
1、建立空项目解决方案,并添加Web文件加和三层架构类(扩展Enum枚举类、Common通用公共类、SqlHelp数据库辅助类)
2、 Web 里面新建两个项目
3、三层架构Model 从动软找实体类 ,DAL用泛型,BLL 用Model和DAL
注意点:Model 则是一个表对应一个类文件
DAL和BLL 只需要一个 BLL 传参实体类 DAL用泛型接口接受并处理。
(三层的搭建项目和数据库操作选择(EF、Dapper、Dos.ORM))
因为三层自己搭建的 所以数据库处理可以SQL方式或者Dos.ROM框架来处理数据库
方式二:
1、在解决方案下创建两个MVC
2、 创建一个SqlHelp 类库
3、用现有的轮子EF创建操作数据库
(三层的搭建项目和数据库操作选择(EF))
注意:EF必须存在类库里面,不可以存在文件夹下,所以第二步很重要。
警告:EF 还可以封装 泛型
泛型:
DAL 层的处理
using Dos.ORM;
using LawOA.Model;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace LawOA.DAL
{
public class DAL<T> //1、从BLL 获取的userinfo 实体类
{
public static readonly DbSession Context = new DbSession("connString");
public List<T> FnSelect() //2、返回数据以userinfo实体类的数据结构返回
{
List<T> list = Context.FromSql("SELECT TOP 5 * FROM userinfo")
.ToList<T>();
return list;
}
}
}
BLL
using LawOA.Model;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace LawOA.BLL
{
public class BLL<T> //1、new 实例化的时候 这个T 赋值了userinfo实体类类型 全局使用
{
DAL.DAL<T> dal = new DAL.DAL<T>(); //2、再将这个T的实体类类型结构赋值给即将实例化的DAL类
public List<T> FnSelect() // 3、这个List<T> 即将返回 T类型格式的数据
{
return dal.FnSelect(); // 4、这个DAL里的dal 方法默认的类型 就是userinfo 类型
}
}
}
控制器
Model.userinfo userinfo = new Model.userinfo(); //一、实例化实体类 //二、实例化 BLL 类,BLL这个方法是泛型,BLL在调用DAL操作数据库的也是泛型 可以实现么 答案:可以
BLL.BLL<Model.userinfo> bll = new BLL.BLL<Model.userinfo>(); // 1、泛型类的时候 指定该类的userinfo实体类作为该类类型 ( 该类T为全局的实体类型)
List<Model.userinfo> result= bll.FnSelect(); //2、 并指定执行返回userinfo实体类结构的泛型变量
return Json(result);
上面 有泛型 再写sql 就没有多大意义了
这是Dos.ORM关于数据库的操作
using Dos.ORM;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Wenshu.DAL
{
public class Areas
{
#region 新增一条信息
/// <summary>
/// 增加一条数据
/// </summary>
/// <param name="model">实体类</param>
/// <returns></returns>
public int Add(Model.Areas model)
{
int id = Base.DB.SqlServer.Insert<Model.Areas>(model);
return id;
}
#endregion
#region 更新一条数据
/// <summary>
/// 更新一条数据
/// </summary>
public int Update(Model.Areas model)
{
Dictionary<Field, object> dic = new Dictionary<Field, object>();
dic.Add(Model.Areas._.AreaName, model.AreaName);
dic.Add(Model.Areas._.Field, model.Field);
dic.Add(Model.Areas._.Pid, model.Pid);
dic.Add(Model.Areas._.IsNext, model.IsNext);
int count = Base.DB.SqlServer.Update<Model.Areas>(dic, Model.Areas._.AreaId == model.AreaId);
return count;
}
#endregion
#region 删除一条数据
/// <summary>
/// 删除一条数据
/// </summary>
public int Delete(int AreaId)
{
int count = Base.DB.SqlServer.Delete<Model.Areas>(Model.Areas._.AreaId == AreaId);
return count;
}
#endregion
#region 得到一个对象实体
/// <summary>
/// 得到一个对象实体 数据
/// </summary>
/// <param name="perTypeId"></param>
/// <returns></returns>
public Model.Areas GetModel(string AreaId)
{
return Base.DB.SqlServer.From<Model.Areas>().Where(Model.Areas ._.AreaId == AreaId).ToFirst();
}
#endregion
#region 根据条件获取信息
/// <summary>
/// 根据条件获取信息(数据)
/// </summary>
/// <param name="wc">where条件</param>
/// <returns></returns>
public List<Model.Areas> GetByWhere(WhereClip wc)
{
return Base.DB.SqlServer.From<Model.Areas>().Where(wc).OrderBy(Model.Areas._.AreaId.Desc).ToList();
}
/// <summary>
/// 根据条件获取信息(数据)
/// </summary>
/// <param name="wc">where条件</param>
/// <param name="pageIndex">页码</param>
/// <param name="pageSize">每页显示数量</param>
/// <returns></returns>
public List<Model.Areas> GetByWhere(WhereClip wc, int pageIndex, int pageSize)
{
return Base.DB.SqlServer.From<Model.Areas>().Where(wc).Page(pageSize, pageIndex).OrderBy(Model.Areas._.AreaId.Desc).ToList();
}
/// <summary>
/// 根据条件获取信息(数据)数量
/// </summary>
/// <param name="wc">where条件</param>
/// <returns></returns>
public int GetByWhereCount(WhereClip wc)
{
return Base.DB.SqlServer.From<Model.Areas>().Where(wc).Count();
}
#endregion
#region 获取顶级区域
public List<Model.Areas> GetAll()
{
return Base.DB.SqlServer.From<Model.Areas>().SetCacheTimeOut(3600).ToList();
}
#endregion
#region 获取顶级区域
public List<Model.Areas> GetByPid(string pid)
{
return Base.DB.SqlServer.From<Model.Areas>().Where(Model.Areas._.Pid == pid).SetCacheTimeOut(3600).ToList();
}
public List<Model.Areas> GetByPidLinkIn(string pid)
{
return Base.DB.SqlServer.From<Model.Areas>().Where(Model.Areas._.Pid == pid).ToList();
}
#endregion
public string GetAreaId(string areaName)
{
try
{
object id = Base.DB.SqlServer.From<Model.Areas>().Where(Model.Areas._.AreaName == areaName).Select(Model.Areas._.AreaId).ToScalar();
if (id == null)
{
return "0";
}
else
{
return id.ToString();
}
}
catch
{
return "0";
}
}
}
}