推荐一个Dapper扩展库,使得更加轻松构建且安全的SQL查询!

玩点科技新鲜事 2024-03-06 11:54:53
我是编程乐趣,一个10年.Net开发经验老程序员,点击右上方“关注”,每天为你分享开源项目和编程知识。 我们都知道Dapper是一个非常好用的ORM框架,它对ADO.NET的简单封装,使得开发者可以更加高效、快速地与数据库进行交互。 今天推荐一个Dapper的扩展库,让你Dapper使用更加简单、方便。 01 项目简介 DapperQueryBuilder是扩展库,它增强了Dapper的功能,特别是关于动态SQL查询和命令的构建。它提供了字符串插值和Fluent API的操作方式,让我们构建复杂的动态查询变得更加直观和简单,并且没有SQL注入的风险。 02 使用方法与示例 1、字符串插值 //Dapper写法string productName = "%Computer%";int subCategoryId = 10;//Dapper写法:传入参数值var products = cn .Query($@" SELECT * FROM Product WHERE Name LIKE @productName AND ProductSubcategoryID = @subCategoryId ORDER BY ProductId",    new { productName, subCategoryId }); //DapperQueryBuilder:直接在查询语句插入值var products = cn .QueryBuilder($@" SELECT * FROM Product WHERE Name LIKE {productName} AND ProductSubcategoryID = {subCategoryId} ORDER BY ProductId" ).Query();2、简化代码量,以下是2者的对比 //Dapper代码量:需要定义SQL语句、参数列表对象var dynamicParams = new DynamicParameters();string sql = "SELECT * FROM Product WHERE 1=1";sql += " AND Name LIKE @productName"; dynamicParams.Add("productName", productName);sql += " AND ProductSubcategoryID = @subCategoryId"; dynamicParams.Add("subCategoryId", subCategoryId);var products = cn.Query(sql, dynamicParams);//DapperQueryBuilder:字符串插值的方式,更加直观而且代码量更少var query = cn.QueryBuilder($"SELECT * FROM Product WHERE 1=1");query += $"AND Name LIKE {productName}"; query += $"AND ProductSubcategoryID = {subCategoryId}"; var products = query.Query();3、动态查询 查询条件 //其中 /**where**/ 为查询条件var q = cn.QueryBuilder($@" SELECT ProductId, Name, ListPrice, Weight FROM Product /**where**/ ORDER BY ProductId ");//自动添加查询条件至查询q.Where($"ListPrice <= {maxprice}");q.where($"weight <="{maxWeight}");q.Where($"Name" like {search}"); 执行var products =" q.Query
0 阅读:2

玩点科技新鲜事

简介:感谢大家的关注