EdisonTalk.MongoProxy组件发布v0.0.6版本
大家好,我是Edison。
组件发布的背景
之前工作中需要用到MongoDB的事务操作,因此参考了一些资料封装了一个小的组件,提供基础的CRUD Repository基类 和 UnitOfWork工作单元模式。但是,我一直都没有把它正式发布到Nuget仓库中,近日抽空把发布了,大家可以搜到它并使用了。
组件具有哪些功能
EdisonTalk.MongoProxy可以提供以下几个重要功能:
(1)提供标准的配置项注入
比如我们在appsettings中填写如下配置,通过提供的扩展方法可以快速注册和MongoDB的连接客户端。这个配置项兼顾了普通账号用户名 以及 SSL证书验证模式。
"MongoDatabaseConfigs": {
"Servers": "xxx01.edisontalk.net,xxx02.edisontalk.net,xxx03.edisontalk.net",
"Port": 27017,
"ReplicaSetName": "edt-replica",
"DatabaseName": "EDT_Practices",
"UserName": "xxxxxxxxxxxxx",
"Password": "xxxxxxxxxxxxx",
"UseTLS": true, // default: false
"AllowInsecureTLS": true, // default: true
"SslCertificatePath": "/etc/pki/tls/certs/EDT_CA.cer" // default: null
}
(2)封装对MongoDB的Repository访问
针对MongoDB封装了MongoRepositoryBase的接口和实现,针对单文档的CRUD都无需再自己实现,只需集成基类即可实现单文档的CRUD。
(3)封装对MongoDB的UnitOfWork操作
针对MongoDB封装了UnitOfWork操作,针对多文档的事务操作,使用该模式可以方便实现。
(4)封装对MongoDB的连接字符串构造
在日常使用中,我们会用到基于配置文件构造MongoDB连接字符串的场景。比如,在CAP项目中,如果我们用到MongoDB作为存储,那么就需要提供MongoDB连接字符串,因此基于标准配置项,我们提供了一个MongoDbConnUtil类用于构造连接字符串。
下面展示了CAP集成MongoDB使用MongoDbConnUtil的GetMongoDbConnectionString方法来构造:
option.UseMongoDB(option =>
{
option.DatabaseConnection = MongoDbConnUtil.GetMongoDbConnectionString(config);
......
});
如何使用该组件:三步上篮
预备步骤:安装组件
PM> NuGet\Install-Package EdisonTalk.MongoProxy -Version 0.0.6
第一步:注入MongoProxy核心部分
在appsettings中配置MongoDB的连接信息:
"MongoDatabaseConfigs": {
"Servers": "xxx01.edisontalk.net,xxx02.edisontalk.net,xxx03.edisontalk.net",
"Port": 27017,
"ReplicaSetName": "edt-replica",
"DatabaseName": "EDT_Practices",
"UserName": "xxxxxxxxxxxxx",
"Password": "xxxxxxxxxxxxx"
}
然后通过扩展方法注入MongoProxy相关部分:
builder.Services.AddMongoProxy(builder.Configuration);
第二步:添加Entity 和 Repository
示例Entity:这里的Table标签需要指名你的集合名字,组件会自动映射上对应集合!
[Table("Orders")]
public class OrderEntity : MongoEntityBase
{
public string OrderNumber { get; set; }
public List<TransmissionEntity> Transmissions { get; set; }
}
示例Repository:
public interface ITodoItemRepository : IMongoRepositoryBase<TodoItem>
{
} public class TodoItemRepository : MongoRepositoryBase<TodoItem>, ITodoItemRepository
{
public TodoItemRepository(IMongoDbContext mongoDbContext)
: base(mongoDbContext)
{
}
} services.AddScoped<ITodoItemRepository, TodoItemRepository>();
第三步:使用Repository 和 UnitOfWork
# 非事务模式
await _taskRepository.AddManyAsync(newTasks);
# 事务模式(借助UnitOfWork工作单元)
private readonly IUnitOfWork _unitOfWork; public OrderService(IUnitOfWork unitOfWork, ......)
{
_unitOfWork = unitOfWork;
......
} public async Task Example()
{
using var session = await _unitOfWork.BeginTransactionAsync())
await _taskRepository.AddManyAsync(newTasks, session);
await _orderRepository.AddAsync(newOrder, session); await _unitOfWork.SaveChangesAsync(session);
}
小结
欢迎大家使用这个组件,我也会持续更新和完善。
附录
GitHub:https://github.com/Coder-EdisonZhou/EdisonTalk.MongoProxy
Nuget:https://www.nuget.org/packages/EdisonTalk.MongoProxy

EdisonTalk.MongoProxy组件发布v0.0.6版本的更多相关文章
- 番茄日志发布1.0.3版本-增加Kafka支持
番茄日志(TomatoLog)能做什么 可能你是第一次听说TomatoLog,没关系,我可以从头告诉你,通过了解番茄日志,希望能帮助有需要的朋友,番茄日志处理将大大降低你采集.分析.处理日志的过程. ...
- Linq to Objects for Java 发布 1.0.1 版本
现在 java 支持 linq 啦.比原生 stream api 更好用,功能更强大.现已发布 version 1.0.1 地址: https://github.com/timandy/linq. A ...
- Python开发工具Wing IDE发布5.0.1版本
Wing IDE是一个跨平台的Python IDE,提供了一个专业代码编辑.自动编辑.自动完成.重构.强大的图形调试器.版本控制.单位测试.搜索及其他功能.目前已经成为最全面.最综合.最先进的智能化P ...
- 个人博客 V0.0.3 版本 ...
早就想弄个人博客网站,一直拖到现在...事情总是忙不完的,想能力提升的快,只能挤时间多练多写了,Keep On Unsleeping 以后原创的笔记都会在自己的博客网站写,博客园和简书就用来转发文章了 ...
- React Native 0.50版本新功能简介
React Native在2017年经历了众多版本的迭代,从接触的0.29版本开始,到前不久发布的0.52版本,React Native作为目前最受欢迎的移动跨平台方案.虽然,目前存在着很多的功能和性 ...
- SDT v0.0.1 上线
自己的第一个开源组件,断断续续写了有一段时间,感觉可以发布 v0.0.1.SDT 是 SVG Drag Tree 的缩写,一个可以通过拖放 SVG 图标,来生成拥有树形结构的视图与相应数据的前端组件. ...
- 【大数据】Linux下Storm(0.9版本以上)的环境配置和小Demo
一.引言: 在storm发布到0.9.x以后,配置storm将会变得简单很多,也就是只需要配置zookeeper和storm即可,而不再需要配置zeromq和jzmq,由于网上面的storm配置绝大部 ...
- [0] 解决版本冲突-使用SVN主干与分支功能
解决版本冲突-使用SVN主干与分支功能 1 前言 大多数产品开发存在这样一个生命周期:编码.测试.发布,然后不断重复.通常是这样的开发步骤: 1) 开发人员开发完毕某一版本(如版本A)功能后, ...
- 鸿蒙开发板外设控制 之 实现物理按键的“长按事件”(按键通用框架 V0.0.2)
我在之前的帖子<实现按键"按下事件"和"释放事件"的通用框架(V0.0.1)>中阐述了DTButton-V0.0.1的设计思路,并且也在帖子中开源了 ...
- Nacos 发布 v0.8.0 Pre-GA版本,安全稳定上生产?
服务注册和服务配置开源项目 Nacos 本周发布了 v0.8.0 Pre-GA 版本,作为开源项目生命周期中的里程碑版本之一,v0.8.0 Pre-GA版本支持登录.命名空间.Metrics监控(对接 ...
随机推荐
- 分布式数据库oceanBase部署
分布式数据库oceanBase部署 相关链接 文档中心 视频中心 软件下载 OceanBase数据库基本操作 OceanBase简介 SQL执行计划 基本概念 为了更好地管理 OceanBase 数据 ...
- git报错:error: Your local changes to the following files would be overwritten by checkout:
原因 原本想切换到dev分支,拉取远程dev分支,但我将分支上的数据修改了,此时切换分支报错 解决方案 方法一: 存到暂存区 # 暂存 git add . git stash 之后切换分支到dev,执 ...
- 无linux基础也能熟练掌握git的基本操作
git是一个用来管理项目的工具,它的远程仓库有github.gitee.gitlab代码托管中心,既可以用于个人共享代码,又可以用于团队进行项目的协作与发布,那么我们一起来了解一下git该如何使用~ ...
- spring-mvc 系列:注解开发(SpringMVCConfig、SpringConfig、AbstractAnnotationConfigDispatcherServletInitializer详细配置)
目录 一.创建初始化类,代替web.xml 二.创建SpringConfig配置类,代替Spring的配置文件 三.创建SpringMVC配置类,代替SpringMVC的配置文件 四.测试功能 使用配 ...
- elasticsearch中的数据类型:flattened和join
flattened:比如你有一个字段的值是一个json,这个json里面又有很多字段,你又不想一个一个的定义这些字段到mapping,就可以用flattened 直接动手:创建索引: PUT pers ...
- 如何在达梦数据库中追踪慢SQL
在达梦数据库中,我们可以通过开启日志记录和设置最小执行时间来追踪慢SQL.下面是具体的步骤: 1. 修改dm.ini文件 使用以下命令编辑dm.ini文件: cd /home/dmdba/dmdbms ...
- 一次搞定:借助Hutool封装代码快速解决webservice调用烦恼
前言 相信很多同行哪怕学了许多主流技术,但工作上依然免不了和传统企业打交道,而这样的企业往往还在用webservice做接口交互. 本文是作者近两年和医疗行业的厂家打交道研究出来的一点调用webser ...
- Hadoop NameNode启动后自动关闭解决方法
Hadoop NameNode启动后过一会自动关闭了,查看日志文件报内存溢出异常: tail -100 /bigdata/logs/hadoop/hadoop-root-namenode-node1. ...
- MySQL篇:第一章_软件安装和基本操作
本篇安装软件Navicate Premium 16破解版和phpstudy_pro phpstudy_pro安装教程 phpstudy官网:https://www.xp.cn/download.htm ...
- nvm、node、vue安装、vue项目创建打包
nvm.node.vue安装.创建vue项目 nvm作用:可以管理多个版本的node,切换node版本,下载node. 前情提要 参 考:https://zhuanlan.zhihu.com/p/51 ...