ASP .Net Core 使用 Dapper 轻型ORM框架
2017-08-11 13:35
585 查看
public class DapperMySQLHelp { #region +ExcuteNonQuery 增、删、改同步操作 /// <summary> /// 增、删、改同步操作 /// 2016-10-26 /// </summary> /// <typeparam name="T">实体</typeparam> /// <param name="connection">链接字符串</param> /// <param name="cmd">sql语句</param> /// <param name="param">参数</param> /// <param name="flag">true存储过程,false sql语句</param> /// <returns>int</returns> public int ExcuteNonQuery<T>(string connection, string cmd, DynamicParameters param, bool flag = true) where T : class, new() { int result = 0; using (MySqlConnection con = new MySqlConnection(connection)) { if (flag) { result = con.Execute(cmd, param, null, null, CommandType.StoredProcedure); } else { result = con.Execute(cmd, param, null, null, CommandType.Text); } } return result; } #endregion #region +ExcuteNonQueryAsync 增、删、改异步操作 /// <summary> /// 增、删、改异步操作 /// 作者: 逍遥帝君 /// 2016-10-26 /// </summary> /// <typeparam name="T">实体</typeparam> /// <param name="connection">链接字符串</param> /// <param name="cmd">sql语句</param> /// <param name="param">参数</param> /// <param name="flag">true存储过程,false sql语句</param> /// <returns>int</returns> public async Task<int> ExcuteNonQueryAsync<T>(string connection, string cmd, DynamicParameters param, bool flag = true) where T : class, new() { int result = 0; using (MySqlConnection con = new MySqlConnection(connection)) { if (flag) { result = await con.ExecuteAsync(cmd, param, null, null, CommandType.StoredProcedure); } else { result = await con.ExecuteAsync(cmd, param, null, null, CommandType.Text); } } return result; } #endregion #region +ExecuteScalar 同步查询操作 /// <summary> /// 同步查询操作 /// 作者: 逍遥帝君 /// 2016-10-26 /// </summary> /// <typeparam name="T">实体</typeparam> /// <param name="connection">连接字符串</param> /// <param name="cmd">sql语句</param> /// <param name="param">参数</param> /// <param name="flag">true存储过程,false sql语句</param> /// <returns>object</returns> public object ExecuteScalar<T>(string connection, string cmd, DynamicParameters param, bool flag = true) where T : class, new() { object result = null; using (MySqlConnection con = new MySqlConnection(connection)) { if (flag) { result = con.ExecuteScalar(cmd, param, null, null, CommandType.StoredProcedure); } else { result = con.ExecuteScalar(cmd, param, null, null, CommandType.Text); } } return result; } #endregion #region +ExecuteScalarAsync 异步查询操作 /// <summary> /// 异步查询操作 /// 作者: 逍遥帝君 /// 2016-10-26 /// </summary> /// <typeparam name="T">实体</typeparam> /// <param name="connection">连接字符串</param> /// <param name="cmd">sql语句</param> /// <param name="param">参数</param> /// <param name="flag">true存储过程,false sql语句</param> /// <returns>object</returns> public async Task<object> ExecuteScalarAsync<T>(string connection, string cmd, DynamicParameters param, bool flag = true) where T : class, new() { object result = null; using (MySqlConnection con = new MySqlConnection(connection)) { if (flag) { result = await con.ExecuteScalarAsync(cmd, param, null, null, CommandType.StoredProcedure); } else { result = con.ExecuteScalarAsync(cmd, param, null, null, CommandType.Text); } } return result; } #endregion #region +FindOne 同步查询一条数据 /// <summary> /// 同步查询一条数据 /// 作者: 逍遥帝君 /// 2016-10-26 /// </summary> /// <typeparam name="T">实体</typeparam> /// <param name="connection">连接字符串</param> /// <param name="cmd">sql语句</param> /// <param name="param">参数</param> /// <param name="flag">true存储过程,false sql语句</param> /// <returns>t</returns> public T FindOne<T>(string connection, string cmd, DynamicParameters param, bool flag = true) where T : class, new() { IDataReader dataReader = null; using (MySqlConnection con = new MySqlConnection(connection)) { if (flag) { dataReader = con.ExecuteReader(cmd, param, null, null, CommandType.StoredProcedure); } else { dataReader = con.ExecuteReader(cmd, param, null, null, CommandType.Text); } if (dataReader == null || !dataReader.Read()) return null; Type type = typeof(T); T t = new T(); foreach (var item in type.GetProperties()) { for (int i = 0; i < dataReader.FieldCount; i++) { //属性名与查询出来的列名比较 if (item.Name.ToLower() != dataReader.GetName(i).ToLower()) continue; var kvalue = dataReader[item.Name]; if (kvalue == DBNull.Value) continue; item.SetValue(t, kvalue, null); break; } } return t; } } #endregion #region +FindOne 异步查询一条数据 /// <summary> /// 异步查询一条数据 /// 作者: 逍遥帝君 /// 2016-10-26 /// </summary> /// <typeparam name="T">实体</typeparam> /// <param name="connection">连接字符串</param> /// <param name="cmd">sql语句</param> /// <param name="param">参数</param> /// <param name="flag">true存储过程,false sql语句</param> /// <returns>t</returns> public async Task<T> FindOneAsync<T>(string connection, string cmd, DynamicParameters param, bool flag = true) where T : class, new() { IDataReader dataReader = null; using (MySqlConnection con = new MySqlConnection(connection)) { if (flag) { dataReader = await con.ExecuteReaderAsync(cmd, param, null, null, CommandType.StoredProcedure); } else { dataReader = await con.ExecuteReaderAsync(cmd, param, null, null, CommandType.Text); } if (dataReader == null || !dataReader.Read()) return null; Type type = typeof(T); T t = new T(); foreach (var item in type.GetProperties()) { for (int i = 0; i < dataReader.FieldCount; i++) { //属性名与查询出来的列名比较 if (item.Name.ToLower() != dataReader.GetName(i).ToLower()) continue; var kvalue = dataReader[item.Name]; if (kvalue == DBNull.Value) continue; item.SetValue(t, kvalue, null); break; } } return t; } } #endregion #region +FindToList 同步查询数据集合 /// <summary> /// 同步查询数据集合 /// 作者: 逍遥帝君 /// 2016-10-26 /// </summary> /// <typeparam name="T">实体</typeparam> /// <param name="connection">连接字符串</param> /// <param name="cmd">sql语句</param> /// <param name="param">参数</param> /// <param name="flag">true存储过程,false sql语句</param> /// <returns>t</returns> public IList<T> FindToList<T>(string connection, string cmd, DynamicParameters param, bool flag = true) where T : class, new() { IDataReader dataReader = null; using (MySqlConnection con = new MySqlConnection(connection)) { if (flag) { dataReader = con.ExecuteReader(cmd, param, null, null, CommandType.StoredProcedure); } else { dataReader = con.ExecuteReader(cmd, param, null, null, CommandType.Text); } if (dataReader == null || !dataReader.Read()) return null; Type type = typeof(T); List<T> tlist = new List<T>(); while (dataReader.Read()) { T t = new T(); foreach (var item in type.GetProperties()) { for (int i = 0; i < dataReader.FieldCount; i++) { //属性名与查询出来的列名比较 if (item.Name.ToLower() != dataReader.GetName(i).ToLower()) continue; var kvalue = dataReader[item.Name]; if (kvalue == DBNull.Value) continue; item.SetValue(t, kvalue, null); break; } } if (tlist != null) tlist.Add(t); } return tlist; } } #endregion #region +FindToListAsync 异步查询数据集合 /// <summary> /// 异步查询数据集合 /// 作者: 逍遥帝君 /// 2016-10-26 /// </summary> /// <typeparam name="T">实体</typeparam> /// <param name="connection">连接字符串</param> /// <param name="cmd">sql语句</param> /// <param name="param">参数</param> /// <param name="flag">true存储过程,false sql语句</param> /// <returns>t</returns> public async Task<IList<T>> FindToListAsync<T>(string connection, string cmd, DynamicParameters param, bool flag = true) where T : class, new() { IDataReader dataReader = null; using (MySqlConnection con = new MySqlConnection(connection)) { if (flag) { dataReader = await con.ExecuteReaderAsync(cmd, param, null, null, CommandType.StoredProcedure); } else { dataReader = await con.ExecuteReaderAsync(cmd, param, null, null, CommandType.Text); } if (dataReader == null || !dataReader.Read()) return null; Type type = typeof(T); List<T> tlist = new List<T>(); while (dataReader.Read()) { T t = new T(); foreach (var item in type.GetProperties()) { for (int i = 0; i < dataReader.FieldCount; i++) { //属性名与查询出来的列名比较 if (item.Name.ToLower() != dataReader.GetName(i).ToLower()) continue; var kvalue = dataReader[item.Name]; if (kvalue == DBNull.Value) continue; item.SetValue(t, kvalue, null); break; } } if (tlist != null) tlist.Add(t); } return tlist; } } #endregion #region +FindToList 同步查询数据集合 /// <summary> /// 同步查询数据集合 /// 作者: 逍遥帝君 /// 2016-10-26 /// </summary> /// <typeparam name="T">实体</typeparam> /// <param name="connection">连接字符串</param> /// <param name="cmd">sql语句</param> /// <param name="param">参数</param> /// <param name="flag">true存储过程,false sql语句</param> /// <returns>t</returns> public IList<T> FindToListAsPage<T>(string connection, string cmd, DynamicParameters param, bool flag = true) where T : class, new() { IDataReader dataReader = null; using (MySqlConnection con = new MySqlConnection(connection)) { if (flag) { dataReader = con.ExecuteReader(cmd, param, null, null, CommandType.StoredProcedure); } else { dataReader = con.ExecuteReader(cmd, param, null, null, CommandType.Text); } if (dataReader == null || !dataReader.Read()) return null; Type type = typeof(T); List<T> tlist = new List<T>(); while (dataReader.Read()) { T t = new T(); foreach (var item in type.GetProperties()) { for (int i = 0; i < dataReader.FieldCount; i++) { //属性名与查询出来的列名比较 if (item.Name.ToLower() != dataReader.GetName(i).ToLower()) continue; var kvalue = dataReader[item.Name]; if (kvalue == DBNull.Value) continue; item.SetValue(t, kvalue, null); break; } } if (tlist != null) tlist.Add(t); } return tlist; } } #endregion #region +FindToListByPage 同步分页查询数据集合 /// <summary> /// 同步分页查询数据集合 /// 作者: 逍遥帝君 /// 2016-10-26 /// </summary> /// <typeparam name="T">实体</typeparam> /// <param name="connection">连接字符串</param> /// <param name="cmd">sql语句</param> /// <param name="param">参数</param> /// <param name="flag">true存储过程,false sql语句</param> /// <returns>t</returns> public IList<T> FindToListByPage<T>(string connection, string cmd, DynamicParameters param, bool flag = true) where T : class, new() { IDataReader dataReader = null; using (MySqlConnection con = new MySqlConnection(connection)) { if (flag) { dataReader = con.ExecuteReader(cmd, param, null, null, CommandType.StoredProcedure); } else { dataReader = con.ExecuteReader(cmd, param, null, null, CommandType.Text); } if (dataReader == null || !dataReader.Read()) return null; Type type = typeof(T); List<T> tlist = new List<T>(); while (dataReader.Read()) { T t = new T(); foreach (var item in type.GetProperties()) { for (int i = 0; i < dataReader.FieldCount; i++) { //属性名与查询出来的列名比较 if (item.Name.ToLower() != dataReader.GetName(i).ToLower()) continue; var kvalue = dataReader[item.Name]; if (kvalue == DBNull.Value) continue; item.SetValue(t, kvalue, null); break; } } if (tlist != null) tlist.Add(t); } return tlist; } } #endregion #region +FindToListByPageAsync 异步分页查询数据集合 /// <summary> /// 异步分页查询数据集合 /// 作者: 逍遥帝君 /// 2016-10-26 /// </summary> /// <typeparam name="T">实体</typeparam> /// <param name="connection">连接字符串</param> /// <param name="cmd">sql语句</param> /// <param name="param">参数</param> /// <param name="flag">true存储过程,false sql语句</param> /// <returns>t</returns> public async Task<IList<T>> FindToListByPageAsync<T>(string connection, string cmd, DynamicParameters param, bool flag = true) where T : class, new() { IDataReader dataReader = null; using (MySqlConnection con = new MySqlConnection(connection)) { if (flag) { dataReader = await con.ExecuteReaderAsync(cmd, param, null, null, CommandType.StoredProcedure); } else { dataReader = await con.ExecuteReaderAsync(cmd, param, null, null, CommandType.Text); } if (dataReader == null || !dataReader.Read()) return null; Type type = typeof(T); List<T> tlist = new List<T>(); while (dataReader.Read()) { T t = new T(); foreach (var item in type.GetProperties()) { for (int i = 0; i < dataReader.FieldCount; i++) { //属性名与查询出来的列名比较 if (item.Name.ToLower() != dataReader.GetName(i).ToLower()) continue; var kvalue = dataReader[item.Name]; if (kvalue == DBNull.Value) continue; item.SetValue(t, kvalue, null); break; } } if (tlist != null) tlist.Add(t); } return tlist; } } #endregion }
相关文章推荐
- ASP .Net Core 使用 Dapper 轻型ORM框架
- ASP .Net Core 使用 Dapper 轻型ORM框架
- ASP .Net Core 使用 Dapper 轻型ORM框架
- ASP.NET Core 2.0系列学习笔记-ORM框架之Dapper
- ASP.NET Core 1.0 使用 Dapper 操作 MySql(包含事务)
- C#实现多级子目录Zip压缩解压实例 NET4.6下的UTC时间转换 [译]ASP.NET Core Web API 中使用Oracle数据库和Dapper看这篇就够了 asp.Net Core免费开源分布式异常日志收集框架Exceptionless安装配置以及简单使用图文教程 asp.net core异步进行新增操作并且需要判断某些字段是否重复的三种解决方案 .NET Core开发日志
- [译]ASP.NET Core Web API 中使用Oracle数据库和Dapper看这篇就够了
- asp.net core使用mysql.data和dapper操作mysql数据库
- ASP.NET Core:使用Dapper和SwaggerUI来丰富你的系统框架
- ASP.NET Core:使用Dapper和SwaggerUI来丰富你的系统框架
- .Net Core 2.0生态(3):ASP.NET Core 2.0 特性介绍和使用指南
- Asp.net core 2.0.1 Razor 的使用学习笔记(六)
- 使用Visual Studio Code开发Asp.Net Core WebApi学习笔记(四)-- Middleware
- 在Mac上开发使用yoeman构建Asp.net core项目并且实现分层引用
- ASP.NET Core WebApi使用Swagger生成api说明文档看这篇就够了
- ASP.NET Core使用HttpClient的同步和异步请求
- Asp.Net Core 集成 Hangfire 配置使用 Redis 存储
- ASP.NET Core中使用GraphQL - 第四章 GraphiQL
- 使用ElasticSearch,Kibana,ASP.NET Core和Docker可视化数据
- ASP.NET Core使用静态文件、目录游览与MIME类型管理