源代码地址:http://git.oschina.net/tiama3798/BootstrapBack_Demo/tree/SqlSugar/

1.Model层

2.抽象层实例:

基础接口

    /// <summary>
/// 基础接口
/// </summary>
public interface IBaseAbstract<T> where T : class
{
#region 基础访问
/// <summary>
/// 获取表达式树
/// </summary>
/// <returns></returns>
Queryable<T> GetQueryable();
/// <summary>
/// 获取对象
/// </summary>
/// <param name="ID">主键ID</param>
/// <returns></returns>
T GetModel(object ID);
/// <summary>
/// 添加对象
/// </summary>
/// <param name="model">对象</param>
/// <returns></returns>
object Add(T model);
/// <summary>
/// 修改对象
/// </summary>
/// <param name="model">对象</param>
/// <returns></returns>
bool Update(T model);
/// <summary>
/// 删除对象
/// </summary>
/// <param name="model">对象</param>
/// <returns></returns>
bool Delete(T model);
/// <summary>
/// 删除对象---主键删除的公共方法,只支持int类型
/// </summary>
/// <param name="ID">主键ID</param>
/// <returns></returns>
bool Delete(int ID);
#endregion
}
    /// <summary>
/// 学生接口定义
/// </summary>
public interface IStudent : IBaseAbstract<student>
{
#region 获取分页
/// <summary>
/// 获取分页数据
/// </summary>
/// <param name="info">分页信息</param>
/// <returns></returns>
List<student> GetPage(PageInfo info,string search); #endregion #region 获取数量
/// <summary>
/// 获取总数
/// </summary>
/// <returns></returns>
int GetCount();
#endregion
}

3.实现成

基础类:

    internal class BaseOperate<T> where T : class, new()
{
protected SqlSugarClient db = null;
public BaseOperate()
{
db = SugarContext.GetInstance();
} #region 基础访问
/// <summary>
/// 获取表达式树
/// </summary>
/// <returns></returns>
public Queryable<T> GetQueryable()
{
return db.Queryable<T>();
}
/// <summary>
/// 获取对象
/// </summary>
/// <param name="ID">主键ID</param>
/// <returns></returns>
public T GetModel(object ID)
{
return GetQueryable().InSingle<T>(ID);
}
/// <summary>
/// 添加对象
/// </summary>
/// <param name="model">对象</param>
/// <returns></returns>
public object Add(T model)
{
try
{
return db.Insert<T>(model);
}
catch (Exception ex)
{
throw new Exception("添加对象失败,当前类型:"+(typeof(T).Name)+ex.Message,ex);
}
}
/// <summary>
/// 修改对象
/// </summary>
/// <param name="model">对象</param>
/// <returns></returns>
public bool Update(T model)
{
try
{
return db.Update<T>(model);
}
catch (Exception ex)
{
throw new Exception("修改对象失败,当前类型:" + (typeof(T).Name), ex);
}
}
/// <summary>
/// 删除对象
/// </summary>
/// <param name="model">对象</param>
/// <returns></returns>
public bool Delete(T model)
{
try
{
return db.Delete<T>(model);
}
catch (Exception ex)
{
throw new Exception("删除对象失败,当前类型:" + (typeof(T).Name), ex);
}
}
/// <summary>
/// 删除对象,默认只支持int类型
/// </summary>
/// <param name="ID">主键ID</param>
/// <returns></returns>
public bool Delete(int ID)
{
try
{
return db.Delete<T, int>(ID);
}
catch (Exception ex)
{
throw new Exception("删除对象失败,当前类型:" + (typeof(T).Name), ex);
}
}
#endregion
}

实现类:

    /// <summary>
/// 学生数据访问操作
/// </summary>
internal class StudentOperate : BaseOperate<student>, IStudent
{
#region 获取分页
/// <summary>
/// 获取分页数据
/// </summary>
/// <param name="info">分页信息</param>
/// <returns></returns>
public List<student> GetPage(PageInfo info, string search)
{
//排序
var query = GetQueryable();
if (string.IsNullOrEmpty(search) == false)
{
query = query.Where(q => q.sno.Contains(search) || q.sname.Contains(search));
}
query = query.OrderBy(q => q.sbirthday);
info.RecordCount = query.Count();
//分页
return query.ToPageList(info.PageIndex, info.PageSize);
}
#endregion #region 获取数量
/// <summary>
/// 获取总数
/// </summary>
/// <returns></returns>
public int GetCount()
{
return GetQueryable().Count();
}
#endregion
}

4.工厂类:

    /// <summary>
/// 获取数据操作接口
/// </summary>
public class SugarFactory
{
public static IStudent GetStudent()
{
return new StudentOperate();
} }

更多参考:

SqlSugar-事务操作

SqlSugar常用增删改操作

SqlSugar常用查询实例-拉姆达表达式

SqlSugar框架T4模板的使用

.Net开源SqlServer ORM框架SqlSugar整理

SqlSugar简单工模式数据访问简单Demo的更多相关文章

  1. Design Patterns (简单工厂模式)

    文章很长很精彩,如是初学请耐心观看.(大神请绕道!) 简单工厂模式: 1.创建型模式 2.简单工厂模式概述 3.简单工厂模式的结构与实现 4.简单工厂模式的应用实例 5.创建对象与使用对象 6.简单工 ...

  2. 数据访问模式之Repository模式

    数据访问模式之Repository模式   数据访问层无非就是对数据进行增删改查,其中增.删.改等我们可以抽象出来写一个公共的接口或抽象类来定义这些方法,并采用一个基类实现这些方法,这样该基类派生的子 ...

  3. PHP设计模式(一)简单工厂模式 (Simple Factory For PHP)

    最近天气变化无常,身为程序猿的寡人!~终究难耐天气的挑战,病倒了,果然,程序猿还需多保养自己的身体,有句话这么说:一生只有两件事能报复你:不够努力的辜负和过度消耗身体的后患.话不多说,开始吧. 一.什 ...

  4. 简单工厂模式—>工厂模式

    一.功能 根据前一篇博客:策略模式+单例模式+简单工厂模式:推送服务,想试用一下工厂模式:将之前的简单工厂模式格式化为工厂模式. 二.实现 修改前:简单工厂 public static class P ...

  5. 再起航,我的学习笔记之JavaScript设计模式30(简单模板模式)

    简单模板模式 概念介绍 简单模板模式(Simple template): 通过格式化字符串拼凑出视图避免创建视图时大量节点操作,优化内存开销. 创建模板 在实际的业务中如果我们需要进行前后台交互,或多 ...

  6. 设计模式之策略模式&amp;简单工厂模式

    学习设计模式已经有非常长一段时间了,事实上先前已经敲过一遍了.可是老认为没有学到什么,认识也不够深刻.如今趁着重构机房,再又一次来过,也不晚. 事实上在敲了机房之后,看看模式,事实上,曾经非常难理解. ...

  7. Asp.Net 设计模式 之 “简单工厂”模式

    主要思想: public static Operation CreateFactory(string ope)        {            //实例化空父类,让父类指向子类         ...

  8. iOS经常使用设计模式——工厂方法(简单工厂模式,工厂方法模式, 抽象工厂模式)

    1. 简单工厂模式 怎样理解简单工厂,工厂方法. 抽象工厂三种设计模式? 简单工厂的生活场景.卖早点的小摊贩.他给你提供包子,馒头,地沟油烙的煎饼等,小贩是一个工厂.它生产包子,馒头,地沟油烙的煎饼. ...

  9. Net设计模式实例之简单工厂模式(Simple Factory Pattern)

    一.简单工厂模式简介(Bref Introduction) 简单工厂模式(Simple Factory Pattern)的优点是,工厂类中包含了必要的逻辑判断,根据客户端的选择条件动态实例化相关的类, ...

随机推荐

  1. Drainage Ditches(Dinic最大流)

    http://poj.org/problem?id=1273 用Dinic求最大流的模板题,注意会有重边. 邻接矩阵建图 #include<stdio.h> #include<str ...

  2. x64 stack walking、调用约定、函数参数识别

    k = <rsp> <rip> <frame_count>x64下manual stack walking与x86不同,x86一般情况下有ebp chain,x64 ...

  3. VM Depot 喜迎中国本土开源镜像!

     发布于 2014-04-07 作者 陈 忠岳 VM Depot 登陆中国之际,我非常高兴地告诉大家,一批各位耳熟能详的中国本地开源镜像已同时上线!得益于开源社区的大力支持,Ubuntu 麒麟13 ...

  4. Web三维技术:Flash Builder+away3d平台搭建(含演示视频)

    转自:http://www.cnblogs.com/beer/archive/2011/07/08/2101492.html 前言:作为页面中实验设备的显示层,需要一个swf作为显示的UI.虽然可以用 ...

  5. IIS短文件漏洞修复

    近期网站系统被扫描出漏洞:IIS短文件/文件夹漏洞 漏洞级别:中危漏洞 漏洞地址:全网站 漏洞描述:IIS短文件名泄露漏洞,IIS上实现上存在文件枚举漏洞,攻击者可利用此漏洞枚举获取服务器根目录中的文 ...

  6. linux下svn使用及查看杀掉进程

    ps –aux ubuntu下安装subversion客户端: sudo apt-get install subversion svn正在checkout时候无法退出操作,shift+ctrl+t新建 ...

  7. python 中 time 模块 格式化 format

    %y 两位数的年份表示(00-99)%Y 四位数的年份表示(000-9999)%m 月份(01-12)%d 月内中的一天(0-31)%H 24小时制小时数(0-23)%I 12小时制小时数(01-12 ...

  8. python 零散记录(五) import的几种方式 序列解包 条件和循环 强调getattr内建函数

    用import关键字导入模块的几种方式: #python是自解释的,不必多说,代码本身就是人可读的 import xxx from xxx import xxx from xxx import xx1 ...

  9. Jquery扩展- 倒计时

    Source Code (function($) { $.fn.countdown = function(options) { // default options var defaults = { ...

  10. Bzoj 1598: [Usaco2008 Mar]牛跑步 dijkstra,堆,K短路,A*

    1598: [Usaco2008 Mar]牛跑步 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 427  Solved: 246[Submit][St ...