[LINQ2Dapper]最完整Dapper To Linq框架(七)---仓储模式

软件发布|下载排行|最新软件

当前位置:首页IT学院IT技术

[LINQ2Dapper]最完整Dapper To Linq框架(七)---仓储模式

a935368322   2019-11-15 我要评论

目录

  • [LINQ2Dapper]最完整Dapper To Linq框架(一)---基础查询
  • [LINQ2Dapper]最完整Dapper To Linq框架(二)---动态化查询
  • [LINQ2Dapper]最完整Dapper To Linq框架(三)---实体类关系映射
  • [LINQ2Dapper]最完整Dapper To Linq框架(四)---Linq和SQL并行使用
  • [LINQ2Dapper]最完整Dapper To Linq框架(五)---查看Linq实际执行的SQL
  • [LINQ2Dapper]最完整Dapper To Linq框架(六)---多表联合与匿名类型返回

 

3.1.8版本增加新功能仓储模式

Kogel.Repository 作为扩展,现实了通用仓储层功能。与其他规范标准一样,仓储层也有相应的规范定义

1.安装

使用仓储模式需要安装扩展包Kogel.Repository,可在Nuget上搜索最新版本

或者使用Nuget命令

dotnet add package Kogel.Repository

 

2.定义

public class TestRepository : BaseRepository<Comment>//Comment为实体类
    {
        public override void OnConfiguring(RepositoryOptionsBuilder builder)
        {
            builder
                .BuildConnection(new MySqlConnection("Server=localhost;Database=Qx_Sport_Common;Uid=root;Pwd=A5101264a;"))//配置连接方式
                .BuildProvider(new MySqlProvider());//配置数据库提供者

        }
    }

 

3.使用方法

1.支持原生Kogel.Dapper.Extension的方法

using (TestRepository testRepository = new TestRepository())
      {
                var querySet = testRepository.QuerySet();//查询对象
                var commandSet = testRepository.CommandSet();//执行对象
     }

或者使用事务中的Orm属性

using (TestRepository testRepository = new TestRepository())
            {
                var comment = testRepository.Orm.QuerySet<Comment>().ToList();
            }

此Orm属性相当于仓储创建时产生的IDbConnection

 

2.UnitOfWork

UnitOfWork 可将多个数据库操作放在一个单元管理执行,最终通用 Commit 执行所有操作,内部采用了数据库事务;

例如

using (TestRepository testRepository = new TestRepository())
            {
                //开始事务
                testRepository.UnitOfWork.BeginTransaction(() =>
                {
                    var comment = testRepository.Orm.QuerySet<Comment>().ToList();

                    testRepository.Orm.CommandSet<Comment>()
                        .Where(x => x.Id == comment.FirstOrDefault().Id)
                        .Update(comment.FirstOrDefault());
                    //其他仓储类代码块
                    new TestRepositoryQuery1().Test();
                });
                //提交
                testRepository.UnitOfWork.Commit();
            }

其他仓储类的代码块也会进入此单元管理的事务中,因为他们都将会用指定方(testRepository)开启的IDbConnection与IDbTransaction

并且如果事务中的代码块异常,会第一时间回滚并且抛出异常

 

 

框架开源,完整框架源码可以去Github上下载:

https://github.com/a935368322/Kogel.Dapper.Extension

如有问题也可以加QQ群讨论:

技术群 710217654

Copyright 2022 版权所有 软件发布 访问手机版

声明:所有软件和文章来自软件开发商或者作者 如有异议 请与本站联系 联系我们