zoukankan      html  css  js  c++  java
  • Dapper 的应用和Dapper.Contrib 的方法封装(一)

    Dapper 和 Dapper.Contrib 的使用示例

    1. Dapper 的安装

    工具 => NuGet包管理器,浏览 nuget 搜索 Dapper,完成dapper的安装

    2. Dapper的优势
    • 轻量级,速度快
    • 支持多种数据库,如MSSQL,MYSQL,SQLLite等
    • 支持多种映射关系
    • 性能高
    3. Dapper 的常用方法封装
        /// <summary>
        /// 数据库操作类
        /// </summary>
        public class DapperRepository
        {
            //static string connStrRead = ConfigurationManager.ConnectionStrings["Read"].ConnectionString;
            //static string connStrWrite = ConfigurationManager.ConnectionStrings["Write"].ConnectionString;
    
            static int commandTimeout = 30;
            public static IDbConnection GetConnection(bool useWriteConn)
            {
                if (useWriteConn)
                    return new SqlConnection(PubConstant.ConnectionString);
                return new SqlConnection(PubConstant.ConnectionString);
            }
            public static SqlConnection GetOpenConnection()
            {
                var conn = new SqlConnection(PubConstant.ConnectionString);
                if (conn.State != ConnectionState.Open)
                    conn.Open();
                return conn;
            }
    
    
            /// <summary>
            ///  执行sql返回一个对象
            /// </summary>
            /// <typeparam name="T"></typeparam>
            /// <param name="sql"></param>
            /// <param name="param"></param>
            /// <param name="useWriteConn"></param>
            /// <returns></returns>
            public static T QueryFirstOrDefault<T>(string sql, object param = null, bool useWriteConn = false, IDbTransaction transaction = null)
            {
                if (transaction == null)
                {
                    using (IDbConnection conn = GetConnection(useWriteConn))
                    {
    
                        return conn.QueryFirstOrDefault<T>(sql, param, commandTimeout: commandTimeout);
                    }
                }
                else
                {
                    var conn = transaction.Connection;
                    return conn.QueryFirstOrDefault<T>(sql, param, commandTimeout: commandTimeout, transaction: transaction);
                }
    
            }
            /// <summary>
            /// 执行sql返回多个对象
            /// </summary>
            /// <typeparam name="T"></typeparam>
            /// <param name="sql"></param>
            /// <param name="param"></param>
            /// <param name="useWriteConn"></param>
            /// <returns></returns>
            public static List<T> QueryGetList<T>(string sql, object param = null, bool useWriteConn = false, IDbTransaction transaction = null)
            {
                using (IDbConnection conn = GetConnection(useWriteConn))
                {
                    conn.Open();
    
                    return conn.Query<T>(sql, param, commandTimeout: commandTimeout, transaction: transaction).ToList();
                }
            }
            /// <summary>
            /// 执行sql返回一个对象--异步
            /// </summary>
            /// <typeparam name="T"></typeparam>
            /// <param name="sql"></param>
            /// <param name="param"></param>
            /// <param name="useWriteConn"></param>
            /// <returns></returns>
            public static async Task<T> QueryFirstOrDefaultAsync<T>(string sql, object param = null, bool useWriteConn = false)
            {
                using (IDbConnection conn = GetConnection(useWriteConn))
                {
                    conn.Open();
                    return await conn.QueryFirstOrDefaultAsync<T>(sql, param, commandTimeout: commandTimeout).ConfigureAwait(false);
                }
            }
            /// <summary>
            /// 执行sql返回多个对象--异步
            /// </summary>
            /// <typeparam name="T"></typeparam>
            /// <param name="sql"></param>
            /// <param name="param"></param>
            /// <param name="useWriteConn"></param>
            /// <returns></returns>
            public static async Task<List<T>> ExecuteReaderRetListAsync<T>(string sql, object param = null, bool useWriteConn = false)
            {
                using (IDbConnection conn = GetConnection(useWriteConn))
                {
                    conn.Open();
                    var list = await conn.QueryAsync<T>(sql, param, commandTimeout: commandTimeout).ConfigureAwait(false);
                    return list.ToList();
                }
            }
            /// <summary>
            /// 执行sql,返回影响行数 
            /// </summary>
            /// <param name="sql"></param>
            /// <param name="param"></param>
            /// <param name="transaction"></param>
            /// <returns></returns>
            public static int ExecuteSqlInt(string sql, object param = null, IDbTransaction transaction = null)
            {
                if (transaction == null)
                {
                    using (IDbConnection conn = GetOpenConnection())
                    {
    
                        return conn.Execute(sql, param, commandTimeout: commandTimeout, commandType: CommandType.Text);
                    }
                }
                else
                {
                    var conn = transaction.Connection;
                    return conn.Execute(sql, param, transaction: transaction, commandTimeout: commandTimeout, commandType: CommandType.Text);
                }
            }
            /// <summary>
            /// 执行sql,返回影响行数--异步
            /// </summary>
            /// <param name="sql"></param>
            /// <param name="param"></param>
            /// <param name="transaction"></param>
            /// <returns></returns>
            public static async Task<int> ExecuteSqlIntAsync(string sql, object param = null, IDbTransaction transaction = null)
            {
                if (transaction == null)
                {
                    using (IDbConnection conn = GetOpenConnection())
                    {
    
                        return await conn.ExecuteAsync(sql, param, commandTimeout: commandTimeout, commandType: CommandType.Text).ConfigureAwait(false);
                    }
                }
                else
                {
                    var conn = transaction.Connection;
                    return await conn.ExecuteAsync(sql, param, transaction: transaction, commandTimeout: commandTimeout, commandType: CommandType.Text).ConfigureAwait(false);
                }
            }
    
            /// <summary>
            /// 执行sql,返回数量
            /// </summary>
            /// <param name="sql"></param>
            /// <param name="param"></param>
            /// <param name="transaction"></param>
            /// <returns></returns>
            public static T ExecuteScalar<T>(string sql,object param = null,IDbTransaction transaction =null)
            {
                if (transaction == null)
                {
                    using (IDbConnection conn = GetOpenConnection())
                    {
                        var res = conn.ExecuteScalar<dynamic>(sql, param);
                        Type type = typeof(T);
                        if (type == typeof(ValueType) || type == typeof(Int32) || type == typeof(Decimal))
                            return res ?? 0;
                        else if (type == typeof(String))
                            return res == null ? "" : Convert.ToString(res);
                        else
                            return res ?? default(T);
                    }
                }
                else
                {
                    var conn = transaction.Connection;
                    var res = conn.ExecuteScalar<dynamic>(sql, param,transaction);
                    Type type = typeof(T);
                    if (type == typeof(ValueType) || type == typeof(Int32) || type == typeof(Decimal))
                        return res ?? 0;
                    else if (type == typeof(String))
                        return res == null ? "" : Convert.ToString(res);
                    else
                        return res ?? default(T);
                }
            }
    
    
            public static dynamic ExecuteScalar(string sql, object param = null, IDbTransaction transaction = null)
            {
                if (transaction == null)
                {
                    using (IDbConnection conn = GetOpenConnection())
                    {
                        var res = conn.ExecuteScalar<dynamic>(sql, param);
                        return res ?? null;
                    }
                }
                else
                {
                    var conn = transaction.Connection;
                    var res = conn.ExecuteScalar<dynamic>(sql, param, transaction);
                    return res ?? null;
                }
            }
    
            /// <summary>
            /// 根据id获取实体
            /// </summary>
            /// <typeparam name="T"></typeparam>
            /// <param name="id"></param>
            /// <param name="transaction"></param>
            /// <param name="useWriteConn"></param>
            /// <returns></returns>
            public static T GetById<T>(int id, IDbTransaction transaction = null, bool useWriteConn = false) where T : class
            {
                if (transaction == null)
                {
                    using (IDbConnection conn = GetConnection(useWriteConn))
                    {
                        return conn.Get<T>(id, transaction: transaction, commandTimeout: commandTimeout);
                    }
                }
                else
                {
                    var conn = transaction.Connection;
                    return conn.Get<T>(id, transaction: transaction, commandTimeout: commandTimeout);
                }
            }
    
            /// <summary>
            /// 根据id获取实体--异步
            /// </summary>
            /// <typeparam name="T"></typeparam>
            /// <param name="id"></param>
            /// <param name="transaction"></param>
            /// <param name="useWriteConn"></param>
            /// <returns></returns>
            public static async Task<T> GetByIdAsync<T>(int id, IDbTransaction transaction = null, bool useWriteConn = false) where T : class
            {
                if (transaction == null)
                {
                    using (IDbConnection conn = GetConnection(useWriteConn))
                    {
    
                        return await conn.GetAsync<T>(id, commandTimeout: commandTimeout);
                    }
                }
                else
                {
                    var conn = transaction.Connection;
                    return await conn.GetAsync<T>(id, transaction: transaction, commandTimeout: commandTimeout);
                }
            }
    
            /// <summary>
            /// 获取实体
            /// </summary>
            /// <typeparam name="T"></typeparam>
            /// <param name="predicate"></param>
            /// <param name="sort"></param>
            /// <param name="transaction"></param>
            /// <param name="commandTimeout"></param>
            /// <param name="buffered"></param>
            /// <returns></returns>
            public static T GetModel<T>(string sql, object param = null, IDbTransaction transaction = null, int? commandTimeout = null, bool buffered = false) where T : class
            {
                using (var conn = GetOpenConnection())
                {
                    return conn.QueryFirst<T>(sql, param, transaction, commandTimeout);
                }
            }
    
    
    
    
            /// <summary>
            /// 插入实体
            /// </summary>
            /// <typeparam name="T"></typeparam>
            /// <param name="item"></param>
            /// <param name="transaction"></param>
            /// <returns></returns>
            public static bool Insert<T>(T item, IDbTransaction transaction = null) where T : class
            {
                string table = SqlBuilderHelper.GetTableName<T>();
                var sql = SqlBuilderHelper.CreateInsertSql<T>(table, null);
                if (transaction == null)
                {
                    using (var conn = GetOpenConnection())
                    {
                        var res = int.Parse(conn.Execute(sql, item, transaction, commandTimeout: commandTimeout).ToString());
                        //var res = conn.Insert<T>(item, commandTimeout: commandTimeout);
                        return res > 0;
                    }
                }
                else
                {
                    var conn = transaction.Connection;
                    var res = int.Parse(conn.Execute(sql, item, transaction, commandTimeout: commandTimeout).ToString());
                    return res > 0;
                    //return conn.Insert(item, transaction: transaction, commandTimeout: commandTimeout) > 0;
                }
            }
    
            /// <summary>
            /// 插入实体返回Id
            /// </summary>
            /// <typeparam name="T"></typeparam>
            /// <param name="item"></param>
            /// <param name="isReturnId"></param>
            /// <param name="transaction"></param>
            /// <returns></returns>
            public static int Insert<T>(T item, bool isReturnId, IDbTransaction transaction = null) where T : class
            {
                if (!isReturnId)
                {
                    Insert<T>(item, transaction);
                    return 0;
                }
                string table = SqlBuilderHelper.GetTableName<T>();
                var sql = SqlBuilderHelper.CreateInsertSql<T>(table, null);
    
                if (transaction == null)
                {
                    using (var conn = GetOpenConnection())
                    {
                        //var res = int.Parse(conn.ExecuteScalar(sql, item, transaction, commandTimeout: commandTimeout).ToString());
                        var res = (int)conn.Insert<T>(item, commandTimeout: commandTimeout);
                        return res;
                    }
                }
                else
                {
                    var conn = transaction.Connection;
                    var res = (int)conn.Insert<T>(item, transaction: transaction, commandTimeout: commandTimeout);
                    //var res = int.Parse(conn.ExecuteScalar(sql, item, transaction, commandTimeout: commandTimeout).ToString());
                    return res;
                }
            }
    
    
            /// <summary>
            /// 批量插入实体
            /// </summary>
            /// <typeparam name="T"></typeparam>
            /// <param name="list"></param>
            /// <param name="transaction"></param>
            public static bool BulkInsert<T>(IEnumerable<T> list, SqlTransaction transaction = null) where T : class
            {
                if (transaction == null)
                {
                    using (var conn = GetOpenConnection())
                    {
                        var res = conn.Insert(list, commandTimeout: commandTimeout);
                        return true;
                        //conn.BulkInsert(list, transaction);
                    }
                }
                else
                {
                    var conn = transaction.Connection;
                    //conn.BulkInsert(list, transaction: transaction);
                    var res = conn.Insert(list, transaction: transaction, commandTimeout: commandTimeout);
                    return true;
                }
            }
    
            /// <summary>
            /// 批量新增事务
            /// </summary>
            /// <typeparam name="T"></typeparam>
            /// <typeparam name="T2"></typeparam>
            /// <param name="enetiy"></param>
            /// <param name="entityItems"></param>
            /// <returns></returns>
            public static bool BulkInsertTrans<T, T2>(T enetiy, List<T2> entityItems)
             where T : class, new()
             where T2 : class, new()
            {
                using (var conn = GetOpenConnection())
                {
                    var trans = conn.BeginTransaction("SampleTransaction");
                    try
                    {
                        string tTable = SqlBuilderHelper.GetTableName<T>();
                        string sqlStr = SqlBuilderHelper.CreateInsertSql<T>(tTable);
                        conn.Execute(sqlStr, enetiy, trans, null, null);
    
                        string t2Table = SqlBuilderHelper.GetTableName<T2>();
                        //写入子表
                        for (int i = 0; i < entityItems.Count; i++)
                        {
                            string sqlItemStr = SqlBuilderHelper.CreateInsertSql<T2>(t2Table);
                            conn.Execute(sqlItemStr, entityItems[i], trans, null, CommandType.Text);
                        }
                        //conn.Insert(entityItems, trans);
                        trans.Commit();
                        return true;
                    }
                    catch (Exception ex)
                    {
                        trans.Rollback();
                        return false;
                    }
                    finally
                    {
                        if (conn.State != ConnectionState.Closed)
                        {
                            conn.Close();
                        }
                    }
                }
            }
    
    
            /// <summary>
            /// 更新单个实体
            /// </summary>
            /// <typeparam name="T"></typeparam>
            /// <param name="item"></param>
            /// <param name="transaction"></param>
            /// <returns></returns>
            public static bool Update<T>(T item, IDbTransaction transaction = null) where T : class
            {
                if (transaction == null)
                {
                    using (var conn = GetOpenConnection())
                    {
                        return conn.Update(item, commandTimeout: commandTimeout);
                    }
                }
                else
                {
                    var conn = transaction.Connection;
                    return conn.Update(item, transaction: transaction, commandTimeout: commandTimeout);
                }
            }
    
    
    
            /// <summary>
            /// 批量更新实体
            /// </summary>
            /// <typeparam name="T"></typeparam>
            /// <param name="item"></param>
            /// <param name="transaction"></param>
            /// <returns></returns>
            public static bool BulkUpdate<T>(List<T> item, IDbTransaction transaction = null) where T : class
            {
                if (transaction == null)
                {
                    using (var conn = GetOpenConnection())
                    {
                        return conn.Update(item, commandTimeout: commandTimeout);
                    }
                }
                else
                {
                    var conn = transaction.Connection;
                    return conn.Update(item, transaction: transaction, commandTimeout: commandTimeout);
                }
            }
    
            /// <summary>
            /// 批量修改事务
            /// </summary>
            /// <typeparam name="T"></typeparam>
            /// <typeparam name="T2"></typeparam>
            /// <param name="enetiy"></param>
            /// <param name="entityItems"></param>
            /// <returns></returns>
            public static bool BulkUpdateTrans<T, T2>(T enetiy, List<T2> entityItems)
                where T : class, new()
                where T2 : class, new()
            {
                using (var conn = GetOpenConnection())
                {
                    IDbTransaction trans = conn.BeginTransaction("SampleTransaction");
                    try
                    {
                        string tTable = SqlBuilderHelper.GetTableName<T>();
                        string sqlStr = SqlBuilderHelper.CreateUpdateSql<T>(tTable, " ID=@ID");
                        conn.Execute(sqlStr, enetiy, trans, null, null);
    
                        string t2Table = SqlBuilderHelper.GetTableName<T2>();
                        //写入子表
                        for (int i = 0; i < entityItems.Count; i++)
                        {
                            string sqlItemStr = SqlBuilderHelper.CreateUpdateSql<T2>(t2Table, " ID=@ID");
                            conn.Execute(sqlItemStr, entityItems[i], trans, null, CommandType.Text);
                        }
                        trans.Commit();
                        return true;
                    }
                    catch (Exception ex)
                    {
                        trans.Rollback();
                        return false;
                    }
                    finally
                    {
                        if (conn.State != ConnectionState.Closed)
                        {
                            conn.Close();
                        }
                    }
                }
            }
    
            /// <summary>
            /// 删除单个实体(sql)
            /// </summary>
            /// <param name="sql"></param>
            /// <param name="param"></param>
            /// <param name="transaction"></param>
            /// <returns></returns>
            public static bool Delete(string sql, object param = null, IDbTransaction transaction = null) 
            {
                if (transaction == null)
                {
                    using (var conn = GetOpenConnection())
                    {
                        return ExecuteSqlInt(sql, param) > 0;
                    }
                }
                else
                {
                    var conn = transaction.Connection;
                    return ExecuteSqlInt(sql, param, transaction) > 0;
                }
            }
    
    
            /// <summary>
            /// 删除单个实体
            /// </summary>
            /// <typeparam name="T"></typeparam>
            /// <param name="item"></param>
            /// <param name="transaction"></param>
            /// <returns></returns>
            public static bool Delete<T>(T item, IDbTransaction transaction = null) where T : class
            {
                if (transaction == null)
                {
                    using (var conn = GetOpenConnection())
                    {
                        return conn.Delete(item, commandTimeout: commandTimeout);
                    }
                }
                else
                {
                    var conn = transaction.Connection;
                    return conn.Delete(item, transaction: transaction, commandTimeout: commandTimeout);
                }
            }
    
            /// <summary>
            /// 批量删除
            /// </summary>
            /// <typeparam name="T"></typeparam>
            /// <param name="items"></param>
            /// <param name="transaction"></param>
            /// <returns></returns>
            public static bool BulkDelete<T>(List<T> items, IDbTransaction transaction = null) where T : class
            {
                if (transaction == null)
                {
                    using (var conn = GetOpenConnection())
                    {
                        return conn.Delete(items, commandTimeout: commandTimeout);
                    }
                }
                else
                {
                    var conn = transaction.Connection;
                    return conn.Delete(items, transaction: transaction, commandTimeout: commandTimeout);
                }
            }
    
    
            //示例:
            //无参查询
            //var qqModeList = conn.Query<UserModel>("select Id,Name,Count from User");
            //带参查询 var qqModeList = conn.Query<UserModel>("select Id,Name,Count from User where Id in @id and Count>@count", new { id = new int[] { 1, 2, 3}, count = 1 });
            /// <summary>
            /// 根据sql获取实体列表
            /// </summary>
            /// <typeparam name="T"></typeparam>
            /// <param name="sql"></param>
            /// <param name="param"></param>
            /// <param name="predicate"></param>
            /// <param name="transaction"></param>
            /// <param name="commandTimeout"></param>
            /// <param name="buffered"></param>
            /// <returns></returns>
            public static List<T> GetList<T>(string sql, object param = null, object predicate = null, IDbTransaction transaction = null, int? commandTimeout = null, bool buffered = false) where T : class
            {
                using (IDbConnection conn = GetOpenConnection())
                {
                    return conn.Query<T>(sql, param, transaction, buffered, commandTimeout).ToList();
                }
            }
    
    
            /// <summary>
            /// 获取实体IEnumerable列表(查询全部,慎用)
            /// </summary>
            /// <typeparam name="T"></typeparam>
            /// <param name="transaction"></param>
            /// <param name="commandTimeout"></param>
            /// <param name="buffered"></param>
            /// <returns></returns>
            //public static List<T> GetList<T>(IDbTransaction transaction = null, int? commandTimeout = null) where T : class
            //{
            //    using (IDbConnection conn = GetOpenConnection())
            //    {
            //        return conn.GetAll<T>(transaction, commandTimeout).ToList();
            //    }
            //}
    
    
            /// <summary>
            /// 分页查询
            /// </summary>
            /// <typeparam name="T"></typeparam>
            /// <param name="sql">主sql 不带 order by</param>
            /// <param name="sort">排序内容 id desc,add_time asc</param>
            /// <param name="pageIndex">第几页</param>
            /// <param name="pageSize">每页多少条</param>
            /// <param name="useWriteConn">是否主库</param>
            /// <returns></returns>
            public static List<T> GetPageList<T>(string sql, string sort, int pageIndex, int pageSize, bool useWriteConn = false, object param = null)
            {
                string pageSql = @"SELECT TOP {0} * FROM (SELECT ROW_NUMBER() OVER (ORDER BY {1}) _row_number_,*  FROM 
                  ({2})temp )temp1 WHERE temp1._row_number_>{3} ORDER BY _row_number_";
                string execSql = string.Format(pageSql, pageSize, sort, sql, pageSize * (pageIndex - 1));
                using (var conn = GetOpenConnection())
                {
                    return conn.Query<T>(execSql, param, commandTimeout: commandTimeout).ToList();
                }
            }
    
            /// <summary>
            /// 分页查询(返回总个数)
            /// </summary>
            /// <typeparam name="T"></typeparam>
            /// <param name="sql"></param>
            /// <param name="sort"></param>
            /// <param name="pageIndex"></param>
            /// <param name="pageSize"></param>
            /// <param name="total"></param>
            /// <param name="param"></param>
            /// <returns></returns>
            public static List<T> GetPageList<T>(string sql, string sort, int pageIndex, int pageSize, out int total, object param = null)
            {
                string pageSql = @"SELECT TOP {0} * FROM (SELECT ROW_NUMBER() OVER (ORDER BY {1}) _row_number_,*  FROM 
                  ({2})temp )temp1 WHERE temp1._row_number_>{3} ORDER BY _row_number_";
                string execSql = string.Format(pageSql, pageSize, sort, sql, pageSize * (pageIndex - 1));
                using (var conn = GetOpenConnection())
                {
                    var query = conn.Query<T>(execSql, param, commandTimeout: commandTimeout);
                    total = query.Count();
                    return query.ToList();
                }
            }
    
        }
    
    

    测试示例:

      /// <summary>
    
            /// dapper 使用示例
    
            /// </summary>
    
            public void DapperTest()
    
            {
    
    
    
                try
    
                {
    
                    //1.查询
    
                    //var res4 = SqlDapperHelper.QueryFirstOrDefault<Order>("select * 
    from Order", $" OrderID='15202116354864929452'");
    
                    //单个查询
    
                    var model = DapperRepository.GetById<OrderModel>(2);
    
                    var model2 = DapperRepository.GetModel<OrderModel>($"select * from 
    Order where Id={2}");
    
                    
    
                    var query1 = 
    DapperRepository.QueryFirstOrDefault<OrderModel>("select * from Order", $" 
    OrderID='152021452'");
    
    
    
                    //条件查询单个
    
                    var query2 = 
    DapperRepository.QueryFirstOrDefault<OrderModel>("select * from Order where 
    OrderID=@orderId and remark = @remark", new { orderId = "152021452", 
    remark = "测试" });
    
    
    
                    //无参查询
    
                    //var qqModeList = conn.Query<UserModel>("select Id,Name,Count from 
    User");
    
                    //带参查询 var qqModeList = conn.Query<UserModel>("select 
    Id,Name,Count from User where Id in @id and Count>@count", new { id = new int[] { 
    1, 2, 3}, count = 1 });
    
    
    
                    string sqlStr = "select * from Order where ID in @id and 
    TotalPrice = @totalPrice";
    
                    var paramStr = new { id = new int[3] { 1, 2, 3 }, 
    totalprice = 1000 };
    
                    var list = DapperRepository.GetList<OrderModel>(sqlStr, paramStr);
    
    
    
    
    
                    //2.条件查询
    
                    //IList<ISort> sort = new List<ISort>
    
                    //    {
    
                    //        new Sort { PropertyName = "CreateTime", Ascending = false }
    
                    //    };
    
                    //var list1 = SqlDapperHelper.GetList<OrderModel>(new { OrderID = 
    "15202152", UserID = 1 }, sort).ToList();
    
    
    
                    ////3.orm 拼接条件 查询         繁琐 不灵活      不太好用
    
                    //IList<IPredicate> predList = new List<IPredicate>();
    
                    //predList.Add(Predicates.Field<OrderModel>(p => p.OrderID, 
    Operator.Like, "4929452%"));
    
                    //predList.Add(Predicates.Field<OrderModel>(p => p.UserID, 
    Operator.Eq, 1));
    
                    //IPredicateGroup predGroup = Predicates.Group(GroupOperator.And, 
    predList.ToArray());
    
                    //var list = SqlDapperHelper.GetList<OrderModel>(predGroup);
    
                    string orderId = "1520251";
    
                    OrderModel order = new OrderModel
    
                    {
    
                        OrderID = orderId,
    
                        CreateTime = DateTime.Now,
               
                        remark = "测试"
    
                    };
    
    
    
                    //2.新增
    
                    int res = DapperRepository.Insert<OrderModel>(order, true);
    
                    //bool res = SqlDapperHelper.Insert<OrderModel>(order);
    
    
    
                    //3.修改
    
                    var orderEntity = DapperRepository.GetById<OrderModel>(res);
    
                    orderEntity.remark = "test";
    
                    bool res2 = DapperRepository.Update<OrderModel>(orderEntity);
    
    
    
                    ////4.删除
    
                    order.OrderType = -1;// Domain.OrderTypeEnum.AbandonedOrders;
    
                    bool res3 = DapperRepository.Update<OrderModel>(orderEntity);
    
    
    
                    //bool res4 = DapperRepository.Delete<OrderModel>(orderEntity);
    
                    ////5.其他
    
                    List<OrderModel> OrderModels = new List<OrderModel>();
    
                    order.remark = "123";
    
                    OrderModels.Add(order);
    
                    bool res5 = 
    DapperRepository.BulkUpdate<OrderModel>(OrderModels);
    
    
    
                    //orderId
    
                    orderId = "152021449";
    
                    List<OrderModel> orderModels2 = new List<OrderModel>();
    
                    order.remark = "123 BulkInsert";
    
                    order.OrderID = orderId;
    
                    order.ID = 0;
    
                    orderModels2.Add(order);
    
                    DapperRepository.BulkInsert<OrderModel>(orderModels2);
    
    
    
    
    
                    order.remark = "123456 BulkInsertTrans";
    
                   
    
                    order.ID = 0;
    
                    List<OrderItemModel> OrderModels3 = new 
    List<OrderItemModel>();
    
                    for (var i = 0; i < 2; i++)
    
                    {
    
                        OrderItemModel OrderItem = new OrderItemModel
    
                        {
    
                            UserID = 7972,//用户ID
    
                            OrderID = orderId,
    
                            ProductID = 10,//产品ID
    
                            Price = 2700,//销售单价
    
                            ToNum = 0,//原料数量
    
                        };
    
                        OrderModels3.Add(OrderItem);
    
                    }
    
                    var res6 = DapperRepository.BulkInsertTrans<OrderModel, 
    OrderItemModel>(order, OrderModels3);
    
    
    
                    //批量删除测试
    
                    bool res7 = 
    DapperRepository.BulkDelete<OrderItemModel>(OrderModels3);
    
                }
    
                catch (Exception ex)
    
                {
    
                    Console.WriteLine(ex.Message);
    
                }
    
            }
    
    
    
    4.Dapper的源码地址:https://github.com/DapperLib/Dapper
    5. 快速入门推荐

    参考:https://www.cnblogs.com/huangxincheng/p/5828470.html

  • 相关阅读:
    poj 1860 最短路—Bellman-Ford算法
    poj 3083 dfs+bfs最短路
    poj 2049 Finding Nemo(bfs+优先队列)
    Codeforces 685B 树形dp
    Codeforces 679B
    hdu 5695 拓扑排序裸题
    hdu 5690 矩阵快速幂/循环节
    《概率》第一卷( 修订和补充第三版)施利亚耶夫著 周概荣译本 勘误
    HDU 2124 Repair the Wall
    HDU 1198 Farm Irrigation
  • 原文地址:https://www.cnblogs.com/jerque/p/15636503.html
Copyright © 2011-2022 走看看