Simple.Data官方地址:  http://simplefx.org/simpledata/docs/index.html

这是一款轻量级别,易用的ORM工具。基于.net framework 4.0的Dynamic特性,支持多种数据库:

  • SQL Server 2005 and later
  • SQL Server Compact Edition 4.0
  • oracle
  • vistadb
  • mysql 4.0 and later
  • sqlite 3.0 and later
  • PostgreSQL
  • sqlanywhere
  • informix
  • Microsoft Access 2000, 2003, and 2007
  • mongodb
  • OData
  • SQL Azure Table storage

用过的朋友都知道好用,所以这里就不多介绍了,下面直接贴上我的代码。

using Simple.Data;namespace SimpleDataDemo.Helper
{public class DataBaseHelper{private const string Con = "Server=(local);Initial Catalog=Blogging;User ID=sa;Password=12345678;";public static dynamic Open(){return Database.Opener.OpenConnection(Con);}}
}

using System.Collections.Generic;
using System.Linq;
using Simple.Data;namespace INetFang.Helper
{/// <summary>/// Simple Data操作通用类 作者:Fang/// http://simplefx.org/simpledata/docs/index.html/// </summary>/// <typeparam name="T">Table Model</typeparam>public class SimpleManager<T>{private readonly dynamic _db = DataBaseHelper.Open();private string TableName { get; set; }public SimpleManager(){TableName = typeof (T).Name;}/// <summary>/// 表的名称/// </summary>/// <param name="tableName"></param>public SimpleManager(string tableName){TableName = tableName;}public dynamic Db(){return _db[TableName];}#region Exists/// <summary>/// 判断是否存在/// </summary>/// <param name="column"></param>/// <param name="value"></param>/// <returns></returns>public bool Exists(string column, dynamic value){return Db().Exists(Db()[column] == value);}/// <summary>/// 例子:/// var e1 = new SimpleExpression(Db()["Id"], 5, SimpleExpressionType.Equal);/// var e2 = new SimpleExpression(Db()["Url"], "2", SimpleExpressionType.Equal);/// bool exi = Exists(e1 && e2)/// /// bool exi = Exists(Db()["Id"]==5 && Db()["Url"]==2)/// </summary>/// <param name="criteria">表达式</param>/// <returns></returns>public bool Exists(SimpleExpression criteria){return Db().Exists(criteria);}#endregion#region Insert/// <summary>/// 增加/// </summary>/// <param name="model">实体对象</param>/// <returns></returns>public T Insert(T model){return Db().Insert(model);}/// <summary>/// 批量增加/// </summary>/// <param name="models">实体对象集合</param>/// <returns></returns>public List<T> Insert(List<T> models){return Db().Insert(models).ToList<T>();}#endregion#region Update/// <summary>/// 根据主键修改/// </summary>/// <param name="model">实体对象</param>/// <returns>bool值,判断是否操作成功</returns>public bool Update(T model){return Db().Update(model) > 0;}#endregion#region Delete/// <summary>/// 删除/// </summary>/// <param name="id">Id</param>/// <returns>bool值,判断是否操作成功</returns>public bool Delete(dynamic id){return Db().DeleteById(id) > 0;}/// <summary>/// 批量删除/// </summary>/// <param name="ids">Id集合</param>/// <returns>bool值,判断是否操作成功</returns>public bool DeleteBatch(dynamic ids){return Db().DeleteById(ids) > 0;}public bool DeleteBatch(string idstring){returnDb().DeleteById(idstring.Split(',').Where(str => !string.IsNullOrEmpty(str)).Cast<dynamic>().ToArray()) >0;}/// <summary>/// 删除全部/// </summary>/// <returns>bool值,判断是否操作成功</returns>public bool DeleteAll(){return Db().DeleteAll() > 0;}#endregion#region Find/// <summary>/// 获取最大值/// </summary>/// <param name="column">列名</param>/// <returns></returns>public int GetMaxBy(string column){return Db().Select(Db()[column].Max()).ToScalarOrDefault();}/// <summary>/// 记录数量/// </summary>/// <returns></returns>public int GetCount(){return Db().GetCount();}public dynamic GetCount(SimpleExpression strWhere){return Db().GetCount(strWhere);}/// <summary>/// 查询全部/// </summary>/// <returns>实体类对象集合</returns>public List<T> FindAll(){return Db().All().ToList<T>();}/// <summary>/// 通过Id查询/// </summary>/// <param name="id">主键Id</param>/// <returns>实体类对象集合</returns>public List<T> FindAllById(dynamic id){return Db().FindAllById(id);}/// <summary>/// 通过Id查询/// </summary>/// <param name="id">主键Id</param>/// <returns>实体类对象</returns>public T FindById(dynamic id){return Db().FindAllById(id).FirstOrDefault();}/// <summary>/// 通过表达式查询/// </summary>/// <param name="criteria">表达式</param>/// <returns>实体类对象集合</returns>public List<T> FindAll(SimpleExpression criteria){return Db().FindAll(criteria).ToList<T>();}public List<T> FindAll(SimpleExpression criteria, string filedOrder){return Db().FindAll(criteria).OrderBy(Db()[filedOrder]).ToList<T>();}/// <summary>/// 获得前几行数据/// </summary>public List<T> FindAll(int top, SimpleExpression criteria, string filedOrder){return Db().FindAll(criteria).OrderBy(Db()[filedOrder]).Take(top).ToList<List<T>>();}/// <summary>/// 通过通过表达式查询查询/// </summary>/// <param name="criteria">表达式</param>/// <returns>实体类对象</returns>public T Find(SimpleExpression criteria){return Db().FindAll(criteria).FirstOrDefault();}/// <summary>/// 分页/// </summary>/// <param name="pageIndex">第几页</param>/// <param name="pageCount">每页总数</param>/// <param name="criteria">条件表达式</param>/// <param name="orderby"></param>/// <returns></returns>public List<T> FindAll(int pageIndex, int pageCount, SimpleExpression criteria, string orderby){return Db().FindAll(criteria).OrderBy(Db()[orderby]).Skip((pageIndex - 1) * pageCount).Take(pageCount).ToList<T>();}public List<T> FindAll(int pageIndex, int pageCount, SimpleExpression criteria, string orderby, out Promise<int> count){return Db().FindAll(criteria).OrderBy(Db()[orderby]).WithTotalCount(out count).Skip((pageIndex - 1) * pageCount).Take(pageCount).ToList<T>();}#endregion/*//事务案例* using (var transaction = database.BeginTransaction()){transaction.Users.Insert(Name: "Steve", Age: 50);transaction.Commit();}*/}
}

View Code

调用:
SimpleManager<Blogs> simple = new SimpleManager<Blogs>();
var tt = simple.QueryAll(); 

foreach (var blogse in tt) {   Console.WriteLine(blogse.Name + " , " + blogse.Url); }

转载于:https://www.cnblogs.com/fangyukui/p/5286262.html

Simple Data帮助类相关推荐

  1. Android doc译文|Building Apps with Content Sharing|Sharing Simple Data

    Sharing Simple Data One of the great things about Android applications is their ability to communica ...

  2. 案例学习BlazeDS+Spring之十一:Simple Data Push

    Simple Data Push 这个简单的数据推送服务demo演示了如何使用消息服务,将数据从服务端推送到客户端.在服务端,一个JAVA组件发布一个模拟真实的值给订阅了此消息目标的FLEX客户端.这 ...

  3. 学习simple.data之基础篇

    simple.data是一个轻量级的.动态的数据访问组件,支持.net4.0. 1.必须条件和依赖性: v4.0 or greater of the .NET framework, or v2.10 ...

  4. 有关Data Input类组件的研究——Silverlight学习笔记[26]

    Data Input(数据输入)类在Silverlight的应用中是十分常见的.Data Input类组件共有三个组件构成:DescriptionViewer(描述显示).Label(标签)以及Val ...

  5. 基本类型包装 基本数据类型包装类 Data 日期类 SimpleDateFormat类

    文章目录 基本类型包装 基本数据类型包装类 Data 日期类 SimpleDateFormat类 基本类型包装 需求,有一个字符串"91 27 46 38 50 ,最终输出结果是 27 38 ...

  6. 浅谈 System.Data.DataRowCollection 类

    我们来看看以下程序吧: 01: using System; 02: using System.Data; 03: using System.Linq; 04: 05: namespace Skyiv. ...

  7. spring data 系类的封装框架开源

    singno-bob 该应用框架 是在spring 的基础上进行的封装.该框架的主旨:让程序员只需要关注与业务的逻辑 模块介绍: 1.singno.bob.framework 父模块         ...

  8. 量化投资之工具篇一:Backtrader从入门到精通(4)-Data相关类源代码解读

    前面的文章通过源代码详解Cerebro是中心系统,负责控制各个部件(例如Strategy,Data feeds,Observers等)进行协同工作. 简而言之,量化最重要的就是两点:数据和策略,其他的 ...

  9. Python Crash Course读书笔记 - 第2章:Variables and Simple Data Types

    变量 文件hello_world.py中, .py是python文件的后缀,因此会用Python interpreter解析. $ cat hello_world.py print("Hel ...

  10. 整理Simple.Data使用方法

    官方:http://simplefx.org/simpledata/docs/index.html Insert var user = db.Users.Insert(Name: "Ford ...

最新文章

  1. 【基础】CSS实现多重边框的5种方式
  2. 微生物常见20种培养基配方
  3. JS中的prototype、__proto__与constructor
  4. 【284天】我爱刷题系列(43)
  5. 网络与并行计算机,并行计算机系统结构网络版 白中英,杨旭东编著.pdf
  6. 如何在linux中也能够使用自动类型推导关键字auto?
  7. linux 命令(7) df
  8. abaqus单位问题
  9. python爬取豆瓣Top250-改进版
  10. 浏览器字体变大|变小怎么办,浏览器字体大小设置方法
  11. Autojs 3.0文档学习之设备信息
  12. 如何使用自动化测试进行Android UI测试
  13. Java项目:SSM汽车维修管理系统源码
  14. html中事件监听的使用,Vue.JS入门篇--事件监听
  15. 怎么看虚拟机服务器ip,虚拟主机的ip怎么看 查看主机ip的方法
  16. python写音乐播放器_AJ Kipper:用Python写一个简易的MP3播放器
  17. 电视制式,480p,720p,1080p
  18. 【转载】自抗扰控制器的学习过程
  19. RequestContextHolder获取request
  20. php自动切换背景,刷新页面后让WordPress背景随机切换

热门文章

  1. Tomcat startup.bat 后台运行,不再弹出 Dos 黑框
  2. HTML5 前端原生 WebSocket 通信
  3. Spring Boot 2.x 自定义数据源 DruidDataSource(操作 mysql 数据库)
  4. linux下的多线程,linux下的多线程
  5. 阶段3 3.SpringMVC·_07.SSM整合案例_07.ssm整合之编写MyBatis框架测试保存的方法
  6. idea springboot启动报SLF4J:Failed to load class “org.slf4j.impl.StaticLoggerBinder”
  7. zoj 3747 dp递推
  8. [译转]深入理解LayoutInflater.inflate()
  9. HTML5基础知识习题 一
  10. 前端面试题:高效地随机选取数组中的元素