前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >扩展ADO.net实现对象化CRUD(.net core/framework)

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

原创
作者头像
用户8604107
修改2021-06-30 14:30:06
3920
修改2021-06-30 14:30:06
举报
文章被收录于专栏:crl .net

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

  1. <u>安装nuget包:CRL</u>
  2. <u>using CRL;</u>

实现数据操作

获取数据访问连接IDbConnection dbConnection

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

代码语言:txt
复制
    public IAbsDBExtend GetDBExtend()

    {

        return dbConnection.GetDBExtend(dbTrans);

    }

使用IAbsDBExtend实现对象化操作

代码语言:txt
复制
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<T>**获取ILambdaQuery对象

代码语言:txt
复制
public ILambdaQuery<T> GetLambdaQuery<T>() where T : class

        {

            return dbConnection.GetLambdaQuery<T>(dbTrans);

        }

使用ILambdaQuery实现查询

代码语言:txt
复制
var query = GetLambdaQuery<TestClass>();

                query.Join<TestClass2>((a, b) => a.Id == b.Id);

                query.PrintQuery();

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

如:

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

**示例查询:**

代码语言:txt
复制
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)

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 扩展ADO.net实现对象化CRUD(.net core/framework)
  • 实现数据操作
  • 实现查询
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档