Dapper.Lite 扩展
  7gTK930onow1 2023年12月31日 35 0

最近重构并精简了Dapper.Lite,以及不依赖Dapper的版本LiteSql。这两款ORM基本完工,自荐一下。

Dapper.Lite是一款Dapper扩展,单表查询和SQL拼接查询条件支持Lambda表达式,旨在为大家提供一款简单易用、稳定可靠的ORM,支持Oracle、MSSQL、MySQL、PostgreSQL、SQLite、Access、ClickHouse等数据库。

它的特色有:

  1. 单表查询支持Lambda
List<SysUser> list = session.Queryable<SysUser>().Where(t => t.Id <= 20 && t.Remark.Contains("测试")).ToList();

单表查询不需要写SQL了。
这次重构,连表查询、子查询等复杂功能都删除了,减少出bug的可能。

  1. 以SQL为主,无论何种数据库,都是下面的写法,这是最常用的用法
    有的数据库前缀是@符,有的是:符,但ClickHouse数据库不一样,写起来麻烦一点,这里统一了。
    session的意思是一次数据库会话,主要是为了数据库事务,如果没有事务,可以直接db.Sql
List<SysUser> list = session.Sql("select * from sys_user where id <= @Id and remark like @Remark", 20, "%测试%").ToList<SysUser>(); //参数按顺序来,一两个也不容易眼花

List<SysUser> list = session.Sql("select * from sys_user where id <= @Id and remark like @Remark", new { Id = 20, Remark = "%测试%" }).ToList<SysUser>(); //参数多的话就这么写吧

接着拼接:

.Append("and name like @Name", "%测试%"); 
  1. SQL拼接查询条件支持Lambda表达式
List<KpTask> kpTaskList = await session
    .Sql<KpTask>(@"
      select t.*, m.model_start as ModelStart, m.model_end as ModelEnd
      from kp_task t
      left join kp_model m on m.model_id=t.model_id")
    .Where(t => t.IsDel == 0)
    .Where(t => new int?[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }.Contains(t.OpeType))
    .Where<KpModel>(m => m.ModelStart <= DateTime.Now && DateTime.Now <= m.ModelEnd)
    .ToListAsync();

既然写SQL了,肯定是有缺点的,例如,表名改了,SQL也要改。
Where条件写Lambda比写SQL方便一点。

如果你打算用Dapper,并想找一款扩展,不妨试试Dapper.Lite,即使有bug,Dapper.Lite的源码是你能hold住的。

源码地址

https://gitee.com/s0611163/Dapper.Lite

https://github.com/0611163/Dapper.Lite

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年12月31日 0

暂无评论

推荐阅读
  NPQODODLqddb   2024年05月17日   69   0   0 .NET
  mVIyUuLhKsxa   2024年05月17日   52   0   0 .NET
  XkHDHG7Y62UM   2024年05月17日   44   0   0 .NET
  f18CFixvrKz8   2024年05月18日   84   0   0 .NET
  rBgzkhl6abbw   2024年05月18日   76   0   0 .NET
  MYrYhn3ObP4r   2024年05月17日   41   0   0 .NET
  S34pIcuyyIVd   2024年05月17日   58   0   0 .NET
  gKJ2xtp6I8Y7   2024年05月17日   50   0   0 .NET
  MYrYhn3ObP4r   2024年05月17日   39   0   0 .NET
7gTK930onow1