C#批量處理參數化SQL


我們都知道ORM全稱叫做Object Relationship Mapper,也就是可以用object來map我們的db,而且市面上的orm框架有很多,其中有一個框架

叫做dapper,而且被稱為the king of ORM。

一:為什么選擇Dapper

1. 性能優越:

    其實在各大網站上,我們大概都會看到這樣的一個對比效果圖,在超過500次poco serialization的過程中所表現的性能,我們發現dapper是第二名,

當然第一名誰也無法超越,越底層的當然久越快,同時也就越麻煩。

2.實測代碼

 

 創造測試數據

CREATE TABLE [dbo].[Users](
    [UserID] [int] IDENTITY(1,1) NOT NULL,
    [UserName] [varchar](50) NULL,
    [Email] [varchar](100) NULL,
    [Address] [varchar](100) NULL,
 CONSTRAINT [PK_Users] PRIMARY KEY CLUSTERED 
(
    [UserID] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]

 

1.webconfig配置數據庫連接串

 

 2.貼代碼

    public class DapperController : Controller
    {
        // GET: Dapper
        public ActionResult Index()
        {
            string connetionString = ConfigurationManager.ConnectionStrings["conn"].ToString();
            IDbConnection connection = new SqlConnection(connetionString);
            //var result = connection.Execute("Insert into Users values (@UserName, @Email, @Address)",new { UserName = "李四", Email = "380234234@qq.com", Address = "上海" });
            //批量插入
            //InsertBulk(connection);
            //批量修改
            //UpdateBulk(connection);
            //查詢
            //Query(connection);
            //刪除
            //Del(connection);
            return View();
        }
        /// <summary>
        /// 批量插入
        /// </summary>
        public void InsertBulk(IDbConnection connection)
        {
            var usersList = Enumerable.Range(0, 10).Select(i => new Users()
            {
                Email = i + "qq.com",
                Address = "測試地址",
                UserName = i + "測試"
            });
            var result = connection.Execute("Insert into Users values (@UserName, @Email, @Address)", usersList);
        }
        /// <summary>
        /// 批量修改
        /// </summary>
        public void UpdateBulk(IDbConnection connection)
        {
            List<Users> usersList = new List<Users>();
         
            for (int i = 1; i < 11; i++)
            {
                Users users = new Users();
                users.UserID = i;
                users.UserName = i + "張三";
                users.Email = i+"@163.com";
                users.Address = i + "張三的住址";
                usersList.Add(users);
            }
            var result = connection.Execute("update Users set UserName=@UserName,Email=@Email,Address=@Address where UserID=@UserID", usersList);
        }
        /// <summary>
        /// 查詢
        /// </summary>
        /// <param name="connection"></param>
        public void Query(IDbConnection connection)
        {
            int[] myArr = new int[] { 1, 2, 3,4,5,6,7,8,9,10 };
            var query = connection.Query<Users>("select * from Users where UserID IN @UserID",new { UserID = myArr });
        }
        /// <summary>
        /// 批量進行修改
        /// </summary>
        /// <param name="connection"></param>
        public void Del(IDbConnection connection) {
            int[] myArr = new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
            var result = connection.Execute("delete from Users where UserID IN @UserID", new { UserID = myArr });
        }
    }

    public class Users {
        public int UserID { get; set; }
        public string Email { get; set; }
        public string Address { get; set; }
        public string UserName { get; set; }

    }

 

        /// <summary>
        /// 查詢
        /// </summary>
        /// <param name="connection"></param>
        public void Query(IDbConnection connection)
        {
            int[] myArr = new int[] { 1, 2, 3,4,5,6,7,8,9,10 };
            var query = connection.Query<Users>("select * from Users where UserID IN @UserID",new { UserID = myArr });
            connection.Query<Users>("select * from Users where UserID IN @UserID",new { UserID = myArr }).ToList();
            connection.Query<Users>("select * from Users where UserID IN @UserID",new { UserID = myArr }).SingleOrDefault();
        }

 

 其他待補充

 

 


免責聲明!

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



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