.NET之Dapper框架運用


Dapper框架

1.項目引用Dapper的Nuget程序包;

2.配置鏈接類

using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Dapper
{
    public class DapperConn
    {
        public static IDbConnection GetConnection()
        {
            string connStr = ConfigurationManager.AppSettings["conn"];
            return new SqlConnection(connStr);
        }
    }   
}

3.配置相應表的實體對象

目前是一個用戶表和一個用戶登錄日志表為例:

用戶表

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Dapper
{
    public class UserModel
    {
        public Int32 Id { get; set; }

        public String Key { get; set; }

        public String Value { get; set; }

    }
}

用戶登錄日志表

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Dapper
{
    public class UserLoginLog
    {
        public Int32 Id { get; set; }

        public Int32 UserId { get; set; }

        public DateTime CreateTime { get; set; }
        
    }
}

4.通過實體對數據庫操作

(包含基本的:增刪改查及事務提交操作)

using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Dapper
{
    public class DB
    {
       
        public int Add(UserModel model)
        {
            using (var conn = DapperConn.GetConnection())
            {
                string sql = "Insert into User (Key,Value) Value (@Key,@Value)";
                return conn.Execute(sql, model);
            }
        }

        public int Add1(UserModel model)
        {
            using (var conn = DapperConn.GetConnection())
            {
                DynamicParameters dp = new DynamicParameters();
                dp.Add("@Key", model.Key);
                dp.Add("@Value", model.Value);
                return conn.Execute("User", dp, null, null, CommandType.TableDirect);
            }
        }

        public int Update(UserModel model)
        {
            using (var conn = DapperConn.GetConnection())
            {
                string sql = "update User set Key=@Key,Value=@Value where Id=@Id";
                return conn.Execute(sql, model);
            }
        }
        public int Del(UserModel model)
        {
            using (var conn = DapperConn.GetConnection())
            {
                string sql = "Delete from User where Id=@Id";
                return conn.Execute(sql, model);
            }
        }

        public UserModel GetModel()
        {
            using (var conn = DapperConn.GetConnection())
            {
                var sql = "Select Id,Key,Value from User";
                return conn.QueryFirstOrDefault<UserModel>(sql);
            }
        }

        public IEnumerable<UserModel> GetModels()
        {
            using (var conn = DapperConn.GetConnection())
            {
                var sql = "Select Id,Key,Value from User";
                return conn.Query<UserModel>(sql);
            }
        }

        public void ImplementAffair(UserModel userModel, UserLoginLog userLogModel)
        {
            using (var conn = DapperConn.GetConnection())
            {
                IDbTransaction tran = conn.BeginTransaction();
                try
                {
                    string query = "Update User set Key='測試' where ID=@ID";//更新一條記錄
                    conn.Execute(query, userModel, tran, null, null);

                    query = "insert into UserLoginLog (userId,CreateTime) value (@userId,@CreateTime)";//刪除一條記錄
                    conn.Execute(query, userLogModel, tran, null, null);

                    //提交
                    tran.Commit();
                }
                catch (Exception ex)
                {
                    //提交錯誤
                    //回滾事務
                    tran.Rollback();
                }
            }
        }

        /// <summary>
        /// 執行無參數存儲過程 返回列表
        /// </summary>
        /// <returns></returns>
        private IEnumerable<UserModel> ExecuteStoredProcedureNoParms()
        {
            using (IDbConnection con = DapperConn.GetConnection())
            {
                var userList = new List<UserModel>();
                userList = con.Query<UserModel>("QueryRoleNoParms",
                                        null,
                                        null,
                                        true,
                                        null,
                                        CommandType.StoredProcedure).ToList();
                return userList;
            }
        }

        /// <summary>
        /// 執行無參數存儲過程 返回int
        /// </summary>
        /// <returns></returns>
        private int ExecutePROC()
        {
            using (IDbConnection con = DapperConn.GetConnection())
            {
               return con.Execute("QueryRoleWithParms", null, null, null, CommandType.StoredProcedure);
            }
        }

        /// <summary>
        /// 執行帶參數的存儲過程
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        private string ExecutePROC(UserModel model)
        {
            DynamicParameters dp = new DynamicParameters();
            dp.Add("@ID", "1");
            dp.Add("@msg", "", DbType.String, ParameterDirection.Output);
            using (IDbConnection con = DapperConn.GetConnection())
            {
                con.Execute("Proc", dp, null, null, CommandType.StoredProcedure);
                string roleName = dp.Get<string>("@msg");
                return roleName;
            }
        }
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM