码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 推荐一个Dapper扩展CRUD基本操作的开源库


    在C#众多ORM框架中,Dapper绝对称得上微型ORM之王,Dapper以灵活、性能好而著名,同样也是支持各种数据库,但是对于一些复杂的查询,我们写原生的SQL语句问题不大,对于CRUD基本操作,我们同样也是需要写原生的SQL来实现,这个就比较麻烦了。

    今天给大家推荐一个Dapper扩展库,来实现CRUD的基本操作,可以省去这些繁琐的代码,提升开发效率。

    项目简介

    这个是Dapper小型扩展库,通过为POCO添加基本CRUD操作,来扩展Dapper。对于复杂的查询场景,也增加了扩展。

    技术架构

    1、支持:支持Net 4.6+、NetStandard 2.0、NetCore 2.0+。

    项目特性

    1、开箱即用,使用简单;

    2、为实体自动映射获取、插入、更新和删除操作;

    3、支持GetList、Count、GetPage方法;

    4、支持GUID、Int类型主键,其他类型可通过自定义的方式实现;

    5、通过ClassMapper实现自定义映射。

    项目结构

    图片

    使用方法

    插入数据

    //定义实体
    Person p = new Person { Active = true, FirstName = "Foo", LastName = "Bar", DateCreated = DateTime.UtcNow };
    //插入并返回id
    var id = Db.Insert(p);
    Assert.AreEqual(1, id);
    

    获取单个实体

    //根据id,获取实体
    Person p2 = Db.Get(id);
    Assert.AreEqual(id, p2.Id);
    

    删除记录

    //根据id,删除记录
    Person p2 = Db.Get(id);Db.Delete(p2);
    Assert.IsNull(Db.Get(id));
    

    更新记录

    //根据id,获取记录
    var p2 = Db.Get<Person>(id);
    //更改记录
    p2.FirstName = "Baz";p2.Active = false;
    //更新记录
    Db.Update(p2);
    

    获取记录列表

    //获取所有记录
    IEnumerable<Person> list = Db.GetList<Person>();
    Assert.AreEqual(4, list.Count());
    

    根据自动排序、获取指定的记录

    //排序字段
    IList<ISort> sort = new List<ISort>  {    Predicates.Sort<Person>(p => p.LastName),    Predicates.Sort<Person>("FirstName")  };
    //获取指定的记录
    IEnumerable<Person> list = Db.GetPage<Person>(null, sort, 0, 2);
    Assert.AreEqual(2, list.Count());
    

    获取过滤条件的记录总数

    //字段过滤
    var predicate = Predicates.Field(f => f.DateCreated, Operator.Lt, DateTime.UtcNow.AddDays(-5));
    //获取总数
    int count = Db.Count(predicate);
    Assert.AreEqual(2, count);
    

    项目地址

    https://github.com/tmsmith/Dapper-Extensions

    更多开源项目请查看:一个专注推荐优秀.Net开源项目的榜单

    - End -

    文章首发于公众号【编程乐趣】,欢迎大家关注。
    图片

  • 相关阅读:
    Ultipa 入选 Gartner® 2022《图数据库管理系统市场指南》全球代表厂商
    腾讯员工人均年薪84.7万,马化腾:员工心理健康最重要
    常用 Git 命令清单
    django上传excel并读入数据库
    华为无线设备配置同一业务VLAN的AP间快速漫游
    详谈mysql各种常用操作数据表结构的用法【建议收藏】
    vue3 为什么快, 相对于vue2 做了那些优化
    黑马C++ 01 基础 —— 数据类型、运算符、循环
    大语言模型之十八-商业思考
    汽配制造问题以及MES管理系统解决方案
  • 原文地址:https://www.cnblogs.com/chingho/p/17090697.html
  • 最新文章
  • 【JVM】编译执行与解释执行的区别是什么?JVM 使用哪种方式?
    用 Hashids 优雅解决 C 端自增 ID 暴露问题
    V8引擎 精品漫游指南--Ignition篇(上) 指令 栈帧 槽位 调用约定 内存布局 基础内容
    LLVM Pass快速入门(四):代码插桩
    milkup:桌面端 markdown AI续写和即时渲染
    基于项目工程构建SBOM(软件物料清单)的研究
    鸿蒙应用开发UI基础第二节:鸿蒙应用程序框架核心解析与实操
    .NET 中如何快速实现 List 集合去重?
    扣子Coze实战:从0到1打造抖音+小红书热点监控智能体
    浅谈数据访问层
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号