zoukankan      html  css  js  c++  java
  • 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();
            }

     其他待补充

    作者:chenze
    出处:https://www.cnblogs.com/chenze-Index/
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
    如果文中有什么错误,欢迎指出。以免更多的人被误导。
  • 相关阅读:
    让思考成为一种习惯:今年,我大四了
    asp.net core源码飘香:Logging组件
    asp.net core源码飘香:Options组件
    asp.net core源码飘香:Configuration组件
    asp.net core源码飘香:从Hosting开始
    webpack code split实现原理
    css specificity
    todo:read
    React Render Props 模式
    recompose mapProps 函数指南
  • 原文地址:https://www.cnblogs.com/chenze-Index/p/13841070.html
Copyright © 2011-2022 走看看