• 轻量ORM-SqlRepoEx (九)与Dapper共舞


    Dapper就另一个轻量ORM,Dapper及其扩展解决了数据访问端的大部门问题,提供了如数据事务管理、缓存等支持。SqlRepoEx的重点解决了Lambda转换成SQL语句,使SQL使用强类型编写,减少字串错误的,实现编译时检查。

    SqlRepoEx同时也实现了数据的映射和访问,因而Dapper并不是SqlRepoEx所必需的,但Dapper中有些如数据事务管理、缓存等功能还是很不错的。使用Dapper需拼接SQL字串,而SqlRepoEx可以生成SQL字串,这种结合,还是很相匹配的。

    可以通过两种方式实现SqlRepoEx 与 Dapper 互动。

    一、直接用SqlRepoEx 生成Sql语句,然后将此Sql作参给 Dapper就可以了,这种做法可以在利用SqlRepoEx 强大的lambda解析Sql的功能,同时也可完全使用Dapper的功能,如果项目原来使用过Dapper,也不会对原有代码形成任何影响。

    二、使用 SqlRepoEx.Adapter.Dapper 库,可不关心 如何使用Dapper, SqlRepoEx.Adapter.Dapper 实现了两个SqlRepoEx的功能类,DapperStatementExecutor,DapperEntityMapper,注册这两个类,然后,就实现了使用Dapper来读写数据。

    string ConnectionString = "datasource=127.0.0.1;username=test;password=test;database=sqlrepotest;charset=gb2312;SslMode = none;";

    var connectionProvider = new MySQLP.ConnectionStringConnectionProvider(ConnectionString);

    MySqlRepoFactory.UseConnectionProvider(connectionProvider);

    MySqlRepoFactory.UseStatementExecutor(new DapperStatementExecutor(connectionProvider));

    MySqlRepoFactory.UseDataReaderEntityMapper(new DapperEntityMapper());

    var repository11 = MySqlRepoFactory.Create<ToDo>();

    var results11 = repository11.Query().Select(e => e.Id, e => e.Task, e => e.CreatedDate).Top(6);

    foreach (var item in results11.Go())

    {Console.WriteLine($"{item.Id} {item.Task} {item.CreatedDate} {item.Remark}");}

    本例源码见:

    https://gitee.com/azthinker/SqlRepoEx2.0Demo/tree/master/Demos/GettingStartedDapper

    https://github.com/AzThinker/SqlRepoEx2.0Demo/tree/master/Demos/GettingStartedDapper

  • 相关阅读:
    DHCP 工作原理
    网络端口知识总结
    EAPOL 协议
    hostapd源代码分析(三):管理帧的收发和处理
    hostapd源代码分析(二):hostapd的工作机制
    hostapd源代码分析(一):网络接口和BSS的初始化
    Hostapd
    事件属性
    CSS颜色和长度单位
    弹性盒子FlexBox简介(一)
  • 原文地址:https://www.cnblogs.com/athinker/p/9765809.html
Copyright © 2020-2023  润新知