dommel mysql_.Net Core AA.FrameWork应用框架介绍
开发多年,一直在从社区获取开源的便利,也深感社区力量的重要性,今天开源一个应用基础框架AA.FrameWork,也算是回馈社区,做出一点点贡献,希望能够帮助类似当年入行的我。
AA.FrameWork 是基于.NET core流行的开源类库创建的基础应用框架。
框架代码图如:
源代码github地址:https://github.com/ChengLab/AAFrameWork
nuget管理中,搜索前缀名称 AA 即可如图
Nuget Packages
Packagenugetdescription
AA.Dapper
基于dapper,Dapper-FluentMap 开发 , 支持工作单元、仓储模式和原生dapper的操作
AA.Log4Net
基于Log4net开发,提供常用的日志操作类
AA.FrameWork
基础框架
AA.Redis
基于StackExchange.Redis开发,提供各种redis操作和基于redis的分布式锁
AA.AutoMapper
基于AutoMapper开发,对象映射
AA.ServiceBus
基于MassTransit开发的服务总线 ;很方便的应用在event bus 和 publish/subscribe 场景
AA.AspNetCore
aspnetcore常用类集合
AA.Dapper用法
实体映射配置
使用DommelEntityMap类映射属性名称。创建一个派生类,在构造函数中设置Map方法,可指定某个属性映射到数据库列名
public class UserInfoMap : DommelEntityMap
{
public UserInfoMap()
{
ToTable("Sys_UserInfo");//映射具体的表名
Map(p => p.SysNo).IsKey();//指定主键 ,IsIdentity是否自增
Map(p=>p.GmtCreate).ToColumn("GmtCreateDate"); //属性名和数据库列名 可以不同
Map(p=>p.LastLoginDate).Ignore();//一些计算属性,可以忽略不需要跟数据库列进行映射
}
}
使用MapConfiguration.Init方法,把映射类初始化,后续就可以使用了
public static void InitMapCfgs()
{
var fluentMapconfig = new List>();
fluentMapconfig.Add(cfg =>
{
cfg.AddMap(new UserInfoMap());
});
MapConfiguration.Init(fluentMapconfig);
}
开始使用AA.Dapper
使用DapperContext设置数据库连接和数据库类型是sqlserver还是mysql
public class AADapperContext : DapperContext
{
public AADapperContext() : base(new NameValueCollection()
{
["aa.dataSource.AaCenter.connectionString"] = "Data Source =.; Initial Catalog = AaCenter;User ID = sa; Password = 123;",
["aa.dataSource.AaCenter.provider"] = "SqlServer"
})
{ }
}
仓储包含了大部分的操作,同时支持Async操作
IDapperRepository userInfoRepository = new DapperRepository();
插入实体
var user = new UserInfo()
{
UserName = "chengTian",
RealName = "成天",
GmtCreate = DateTime.Now,
GmtModified = DateTime.Now
};
var result = userInfoRepository.Insert(user);
修改实体
var user = userInfoRepository.Get(1);
user.GmtModified = DateTime.Now;
var result = userInfoRepository.Update(user);
获取实体
var user = userInfoRepository.Get(1);//By 主键
var users = userInfoRepository.GetAll();//所有
var users = userInfoRepository.Select(p => p.UserName == "chengTian");//谓词
删除实体
var user = userInfoRepository.Get(1);
var result = userInfoRepository.Delete(user);
支持Dapper原生操作
操作基本的封装都是单表的操作,可以满足一部分业务开发,有些业务场景编写sql还是比较合适的比如报表和一些复杂的查询,推荐使用原生dapper的操作
public class UserInfoRepository : DapperRepository, IUserInfoRepository
{
private readonly IDapperContext _dapperContext;
public UserInfoRepository(IDapperContext context)
{
_dapperContext = context;
}
public IEnumerable QueryAll()
{
var result = _dapperContext.DataBase.Query("SELECT * from [Sys_UserInfo]");//实例
return result;
}
}
AA.Log4Net 用法
log4net.config 配置,并将log4net.config的属性->复制到输出目录->设置为->始终复制
Log4NetLogger.Use("配置文件名或者路径+配置文件名"); 例如:log4net.config文件在根目录下,Log4NetLogger.Use("log4net.config");如果在自定义文件中;例如config/log4net.config 则Log4NetLogger.Use("config/log4net.config")
ILog log= Logger.Get(typeof(类)); log.Debug("example");
AA.ServiceBus 用法
生产者(事件和命令两种类型)
实例化bus
//事件
IBusControl busControl = ServiceBusManager.Instance.UseRabbitMq(rabbitMqUri, rabbitMqUserName, rabbitMqPassword)
.BuildEventProducer();
//命令
ISendEndpoint busControl = ServiceBusManager.Instance.UseRabbitMq(rabbitMqUri, rabbitMqUserName, rabbitMqPassword)
.BuildCommandProducer(queueName);
实例化bus之后可以使用发送和发布两个方法
//命令
TaskUtil.Await(busControl.Send(new
{
Id = 10
}));
//事件
TaskUtil.Await(busControl.Publish(new
{
Id = 1
}));
消费者
[Fact]
public void TestConsumer()
{
Log4NetLogger.Use("Log4Net/log4net.config");
string rabbitMqUri = "rabbitmq://localhost:5672";
string rabbitMqUserName = "";
string rabbitMqPassword = "";
string queueName = "order.queue";
var busControl = ServiceBusManager.Instance.UseRabbitMq(rabbitMqUri, rabbitMqUserName, rabbitMqPassword)
.RegisterConsumer(queueName)//注册命令消费者
.RegisterConsumer(null)//注册事件消费者
.Build();
busControl.Start();
}
定义消费者需要实现接口IConsumer
public class OrderSubmittedEventConsumer : IConsumer
{
public async Task Consume(ConsumeContext context)
{
var @event = context.Message;
var result = $"OrderSubmittedEvent {@event.Id.ToString()}";
ILog log = Logger.Get(typeof(OrderSubmittedEventConsumer));
log.Debug(result);
//do somethings...
}
}
public class SubmitOrderCommandConsumer : IConsumer
{
public async Task Consume(ConsumeContext context)
{
var command = context.Message;
var result = $"CreateFooCommand {command.Id.ToString()}";
ILog log = Logger.Get(typeof(SubmitOrderCommandConsumer));
log.Debug(result);
//do somethings...
}
}
AA.AutoMapper用法
实现IMapperConfiguration接口,创建映射规则配置
public class WebMapperConfigurations : IMapperConfiguration
{
public int Order { get { return 0; } }
public Action GetConfiguration()
{
Action action = cfg =>
{
cfg.CreateMap();
};
return action;
}
}
在程序startup调用配置
var mapperConfig = new WebMapperConfigurations();
AutoMapperConfiguration.Init(new List> { mapperConfig.GetConfiguration() });
ObjectMapping.ObjectMapManager.ObjectMapper = new AutoMapperObjectMapper();
利用扩展方法MapTo执行映射
[Fact]
public void TestMap()
{
//init
Init();
UserVm userVm = new UserVm { Id = 1, Name = "成天" ,Remark="微信公众号:dotNet知音"};
var userDto = userVm.MapTo();
//var userDto2 = userVm.MapTo();
}
后面也会提供基于AA框架的应用实例,有问题可以联系我,一起交流和成长。
关于找一找教程网
本站文章仅代表作者观点,不代表本站立场,所有文章非营利性免费分享。
本站提供了软件编程、网站开发技术、服务器运维、人工智能等等IT技术文章,希望广大程序员努力学习,让我们用科技改变世界。
[.Net Core AA.FrameWork应用框架介绍]http://www.zyiz.net/tech/detail-92923.html
dommel mysql_.Net Core AA.FrameWork应用框架介绍相关推荐
- .Net Core AA.FrameWork应用框架介绍
开发多年,一直在从社区获取开源的便利,也深感社区力量的重要性,今天开源一个应用基础框架AA.FrameWork,也算是回馈社区,做出一点点贡献,希望能够帮助类似当年入行的我. AA.FrameWork ...
- .Net Core 分布式微服务框架介绍 - Jimu
.Net Core 分布式微服务框架介绍 - Jimu 系列文章 [原文] .Net Core 分布式微服务框架介绍 - Jimu [原文] .Net Core 分布式微服务框架 - Jimu 添加 ...
- Jimu : .Net Core 分布式微服务框架介绍
一.前言 近些年一直浸淫在 .Net 平台做企业应用开发,用过的 .Net 框架不多(具体数量不清,印象深刻的有 Asp.Net MVC,WPF,其他很多都是基于微软开发的框架做些封装而形成新的框架, ...
- 手把手引进门之 ASP.NET Core Entity Framework Core(官方教程翻译版 版本3.2.5)
以下是手把手引进门教程,基于 ASP.NET Core, Entity Framework Core ,ABP 框架 创建Web 应用, PS: 自带自动的测试模块哦. 样例下载 (上 github ...
- Net Core下多种ORM框架特性及性能对比
在.NET Framework下有许多ORM框架,最著名的无外乎是Entity Framework,它拥有悠久的历史以及便捷的语法,在占有率上一路领先.但随着Dapper的出现,它的地位受到了威胁,本 ...
- 使用Angular 4、Bootstrap 4、TypeScript和ASP.NET Core开发的Apworks框架案例应用
最近我为我自己的应用开发框架Apworks设计了一套案例应用程序,并以Apache 2.0开源,开源地址是:https://github.com/daxnet/apworks-examples,目的是 ...
- abp mysql .net core_ABP .Net Core Entity Framework迁移使用MySql数据库
一.迁移说明 ABP模板项目Entity Framework Core默认使用的是Sql Server,也很容易将数据库迁移到MySQL,步骤如下. 二.迁移MySQL步骤 1. 下载项目 请到 ht ...
- ASP.NET Core 入门教程 8、ASP.NET Core + Entity Framework Core 数据访问入门
ASP.NET Core 入门教程 8.ASP.NET Core + Entity Framework Core 数据访问入门 原文:ASP.NET Core 入门教程 8.ASP.NET Core ...
- Core Telephony Framework
Core Telephony Framework(核心通讯框架) 概述: 这个库的前缀为CT(Core Telephony),主要用来获得用户通讯相关信息,我们可以使用这些信息来定义外部接口以便自己使 ...
最新文章
- 在android上移植ios
- Codeforces 1108 E2(线段树+思维)
- android手机连接无线路由器上网设置,怎样用手机设置无线路由器上网?
- html5 - canvas
- qemu+linux+x86+64,kvm 内部错误:无法找到适合 x86_64 的模拟器
- 基于改进SSD算法的小目标检测与应用
- 禁止html页面无法粘贴复制,javascript中如何禁止复制粘贴?
- Docker学习总结(31)——使用Maven插件构建docker镜像
- 二叉搜索树-php实现 插入删除查找等操作
- 电商项目--使用GitHub进行版本管理,完美衔接idea详细流程,Java初阶知识点,完整步骤
- Java基础视频教程
- 计算机一级pdf百度云,计算机一级(实操).pdf
- 《做难而正确的事》有感
- Ext js 下拉框模糊匹配查询,并支持反复输入检索
- 读书笔记——极简算法史:从数学到机器的故事 - 吕克·德·布拉班迪尔
- 2020联发科技笔试面试经验
- 1602液晶显示摄氏度
- 秀场精灵陈梓桐 受邀担任第六季完美童模全球总决赛首席体验官
- C语言教程基础训练(一):如何计算圆的周长
- 读大学,究竟读什么:一名25岁的董事长给大学生的18条忠告