Simple Data帮助类
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帮助类相关推荐
- 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 ...
- 案例学习BlazeDS+Spring之十一:Simple Data Push
Simple Data Push 这个简单的数据推送服务demo演示了如何使用消息服务,将数据从服务端推送到客户端.在服务端,一个JAVA组件发布一个模拟真实的值给订阅了此消息目标的FLEX客户端.这 ...
- 学习simple.data之基础篇
simple.data是一个轻量级的.动态的数据访问组件,支持.net4.0. 1.必须条件和依赖性: v4.0 or greater of the .NET framework, or v2.10 ...
- 有关Data Input类组件的研究——Silverlight学习笔记[26]
Data Input(数据输入)类在Silverlight的应用中是十分常见的.Data Input类组件共有三个组件构成:DescriptionViewer(描述显示).Label(标签)以及Val ...
- 基本类型包装 基本数据类型包装类 Data 日期类 SimpleDateFormat类
文章目录 基本类型包装 基本数据类型包装类 Data 日期类 SimpleDateFormat类 基本类型包装 需求,有一个字符串"91 27 46 38 50 ,最终输出结果是 27 38 ...
- 浅谈 System.Data.DataRowCollection 类
我们来看看以下程序吧: 01: using System; 02: using System.Data; 03: using System.Linq; 04: 05: namespace Skyiv. ...
- spring data 系类的封装框架开源
singno-bob 该应用框架 是在spring 的基础上进行的封装.该框架的主旨:让程序员只需要关注与业务的逻辑 模块介绍: 1.singno.bob.framework 父模块 ...
- 量化投资之工具篇一:Backtrader从入门到精通(4)-Data相关类源代码解读
前面的文章通过源代码详解Cerebro是中心系统,负责控制各个部件(例如Strategy,Data feeds,Observers等)进行协同工作. 简而言之,量化最重要的就是两点:数据和策略,其他的 ...
- Python Crash Course读书笔记 - 第2章:Variables and Simple Data Types
变量 文件hello_world.py中, .py是python文件的后缀,因此会用Python interpreter解析. $ cat hello_world.py print("Hel ...
- 整理Simple.Data使用方法
官方:http://simplefx.org/simpledata/docs/index.html Insert var user = db.Users.Insert(Name: "Ford ...
最新文章
- 【基础】CSS实现多重边框的5种方式
- 微生物常见20种培养基配方
- JS中的prototype、__proto__与constructor
- 【284天】我爱刷题系列(43)
- 网络与并行计算机,并行计算机系统结构网络版 白中英,杨旭东编著.pdf
- 如何在linux中也能够使用自动类型推导关键字auto?
- linux 命令(7) df
- abaqus单位问题
- python爬取豆瓣Top250-改进版
- 浏览器字体变大|变小怎么办,浏览器字体大小设置方法
- Autojs 3.0文档学习之设备信息
- 如何使用自动化测试进行Android UI测试
- Java项目:SSM汽车维修管理系统源码
- html中事件监听的使用,Vue.JS入门篇--事件监听
- 怎么看虚拟机服务器ip,虚拟主机的ip怎么看 查看主机ip的方法
- python写音乐播放器_AJ Kipper:用Python写一个简易的MP3播放器
- 电视制式,480p,720p,1080p
- 【转载】自抗扰控制器的学习过程
- RequestContextHolder获取request
- php自动切换背景,刷新页面后让WordPress背景随机切换
热门文章
- Tomcat startup.bat 后台运行,不再弹出 Dos 黑框
- HTML5 前端原生 WebSocket 通信
- Spring Boot 2.x 自定义数据源 DruidDataSource(操作 mysql 数据库)
- linux下的多线程,linux下的多线程
- 阶段3 3.SpringMVC·_07.SSM整合案例_07.ssm整合之编写MyBatis框架测试保存的方法
- idea springboot启动报SLF4J:Failed to load class “org.slf4j.impl.StaticLoggerBinder”
- zoj 3747 dp递推
- [译转]深入理解LayoutInflater.inflate()
- HTML5基础知识习题 一
- 前端面试题:高效地随机选取数组中的元素