码迷,mamicode.com
首页 > 移动开发 > 详细

使用Dapper操作Mysql数据库

时间:2017-08-19 00:53:23      阅读:413      评论:0      收藏:0      [点我收藏+]

标签:value   direction   first   proc   etl   程序包   table   优化   public   

       首先我想说明一下:相比最原始的ADO.NET,一般都认为封装过一层的ORM性能上会有损耗,但其实在使用中你会发现,当你需要把数据库对象转化为实体模型时,很多所谓的DbHelper其实封装的很低效,反而是成熟的orm框架性能非常高;

       在操作之前先在nuget里获取dapper和mysql.data的程序包:

       插入数据:

        /// <summary>
        /// 增加一条数据
        /// </summary>
        public bool Add(User model)
        {
            int cnt = 0;
            string sQuery = "INSERT INTO user (Id,Login_Name,User_Pwd,User_Name,Phone_Num,Head_Portrait,Enabled,Create_Time,Update_Time)"
                              + " VALUES(@Id,@Login_Name,@User_Pwd,@User_Name,@Phone_Num,@Head_Portrait,@Enabled,@Create_Time,@Update_Time)";
            using (var connection = new MySqlConnection(connstr))
            {

                cnt = connection.Execute(sQuery, model);
            }

            if (cnt > 0)
            {
                return true;
            }
            else
            {
                return false;
            }
        }

         删除数据

      /// <summary>
        /// 根据ID删除一条数据
        /// </summary>
        public bool Delete(int id)
        {
            int cnt = 0;
            string sQuery = "Delete FROM user " + "WHERE Id=@Id";
            using (var connection = new MySqlConnection(connstr))
            {
                cnt = connection.Execute(sQuery, new { Id = id });
            }
            if (cnt > 0)
            {
                return true;
            }
            else
            {
                return false;
            }
        }

         修改数据

        /// <summary>
        /// 更新一条数据
        /// </summary>
        public bool Update(User model)
        {
            string sQuery = "UPDATE user SET Login_Name=@Login_Name,User_Pwd=@User_Pwd,User_Name=@User_Name,Phone_Num=@Phone_Num,Head_Portrait=@Head_Portrait,Enabled=@Enabled,Create_Time=@Create_Time,Update_Time=@Update_Time"
                 + " WHERE Id=@Id";
            int cnt = 0;
            using (var connection = new MySqlConnection(connstr))
            {

                cnt = connection.Execute(sQuery, model);
            }
            if (cnt > 0)
            {
                return true;
            }
            else
            {
                return false;
            }
        }

 

         查询数据

        /// <summary>
        /// 根据ID获取实体对象
        /// </summary>
        public User GetModel(int id)
        {
            string sQuery = "SELECT Id,Login_Name,User_Pwd,User_Name,Phone_Num,Head_Portrait,Enabled,Create_Time,Update_Time FROM user " + "WHERE Id = @Id";

            using (var connection = new MySqlConnection(connstr))
            {
                return connection.Query<User>(sQuery, new { Id = id }).FirstOrDefault();
            }
        }

        调用分页存储过程

        /// <summary>
        /// 分页获取数据列表
        /// </summary>
        public IEnumerable<User> GetListByPage(int PageSize, int PageIndex, string strWhere, string orderStr, ref int rowsnum)
        {
            using (var connection = new MySqlConnection(connstr))
            {
                var param = new DynamicParameters();
                param.Add("@p_table_name", "user");
                param.Add("@p_fields", "Id,Login_Name,User_Pwd,User_Name,Phone_Num,Head_Portrait,Enabled,Create_Time,Update_Time");
                param.Add("@p_page_size", PageSize);
                param.Add("@p_page_now", PageIndex);
                param.Add("@p_where_string", strWhere);
                param.Add("@p_order_string", orderStr);
                param.Add("@p_out_rows", 0, DbType.Int32, ParameterDirection.Output);
                IEnumerable<User> infoList = connection.Query<User>("pr_pager", param, null, true, null, CommandType.StoredProcedure);
                rowsnum = param.Get<int>("@p_out_rows");
                return infoList;
            }

 

 在不进行任何代码特殊优化的测试中,同过Emit反射IDataReader的序列队列,来快速的得到和产生对象的dapper性能是很不错的。

 

使用Dapper操作Mysql数据库

标签:value   direction   first   proc   etl   程序包   table   优化   public   

原文地址:http://www.cnblogs.com/dafanjoy/p/7392672.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!