zoukankan      html  css  js  c++  java
  • 轻量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

  • 相关阅读:
    魔法方法中的__str__和__repr__区别
    新建分类目录后,点击显示错误页面?
    3.用while和for循环分别计算100以内奇数和偶数的和,并输出。
    2.for循环实现打印1到10
    1.while循环实现打印1到10
    021_for语句
    014_运算符_字符串连接
    020_while语句
    019_增强switch语句
    018_switch语句
  • 原文地址:https://www.cnblogs.com/athinker/p/9765809.html
Copyright © 2011-2022 走看看