• 扩展ADO.net实现对象化CRUD(.net core/framework)


    扩展ADO.net实现对象化CRUD(.net core/framework)

    1. 安装nuget包:CRL
    2. using CRL;

    实现数据操作

    获取数据访问连接IDbConnection dbConnection

    通过扩展方法GetDBExtend获取IAbsDBExtend对象

        public IAbsDBExtend GetDBExtend()
        {
            return dbConnection.GetDBExtend(dbTrans);
        }
    

    使用IAbsDBExtend实现对象化操作

    var db = GetDBExtend();
    db.BatchInsert(new List<TestClass>() { new TestClass() { Id = DateTime.Now.Millisecond, Name = "ddddd" } },true);
    db.Update(b => b.Id == 1, new { Number = 2 });
    

    IAbsDBExtend可以实现所有数据操作,如:

    1. 批量更新
    2. 批量删除
    3. 批量插入
    4. 存储过程
    5. 表字段、索引检查

    实现查询

    通过扩展方法GetLambdaQuery获取ILambdaQuery对象

    public ILambdaQuery<T> GetLambdaQuery<T>() where T : class
            {
                return dbConnection.GetLambdaQuery<T>(dbTrans);
            }
    

    使用ILambdaQuery实现查询

    var query = GetLambdaQuery<TestClass>();
                    query.Join<TestClass2>((a, b) => a.Id == b.Id);
                    query.PrintQuery();
    

    ILambdaQuery能实现子查询和嵌套查询,只要符合T-SQL语义逻辑,可以使用ILambdaQueryResultSelect无限叠加

    如:

    • join后group
    • join后再join
    • group后再join
    • join一个group结果
    • join一个union结果
    • 对union进行group再join
    • ...

    示例查询:

    var q1 = GetLambdaQuery();
                var q2 = q1.CreateQuery<Code.ProductData>();
                q2.Where(b => b.Id > 0);
                var view = q2.CreateQuery<Code.Member>().Where(b => b.Id > 0).GroupBy(b => b.Name).Select(b => new { b.Name, aa = b.Id.COUNT() });//GROUP查询
                var view2 = q2.Join(view, (a, b) => a.CategoryName == b.Name).Select((a, b) => new { ss1 = a.UserId, ss2 = b.aa });//关联GROUP
                q1.Join(view2, (a, b) => a.Id == b.ss1).Select((a, b) => new { a.Id, b.ss1 }).ToList();//再关联
                //var result = view2.ToList();
                var sql = q1.PrintQuery();
    

    源码示例参考

    Data/QueryTest/test · hubroxxl/CRL - 码云 - 开源中国 (gitee.com)

  • 相关阅读:
    别再为了this发愁了:JS中的this机制
    专为控制打印设计的CSS样式
    怎样用纯HTML和CSS更改默认的上传文件按钮样式
    将HTML转成XHTML并清除一些无用的标签和属性
    JavaScript中textRange对象使用方法总结
    DIV+CSS规范命名集合
    JS条件判断
    CSS只是进化的一部分
    25 个超棒的 HTML5 & JavaScript 游戏引擎开发库
    开发一个完整的JavaScript组件
  • 原文地址:https://www.cnblogs.com/hubro/p/14953910.html
Copyright © 2020-2023  润新知