zoukankan      html  css  js  c++  java
  • 扩展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)

  • 相关阅读:
    HTML元素解释
    Java命名规范
    HDU 1058 Humble Numbers(DP,数)
    HDU 2845 Beans(DP,最大不连续和)
    HDU 2830 Matrix Swapping II (DP,最大全1矩阵)
    HDU 2870 Largest Submatrix(DP)
    HDU 1421 搬寝室(DP)
    HDU 2844 Coins (组合背包)
    HDU 2577 How to Type(模拟)
    HDU 2159 FATE(二维完全背包)
  • 原文地址:https://www.cnblogs.com/hubro/p/14953910.html
Copyright © 2011-2022 走看看