开发多年,一直在从社区获取开源的便利,也深感社区力量的重要性,今天开源一个应用基础框架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应用框架介绍相关推荐

  1. .Net Core AA.FrameWork应用框架介绍

    开发多年,一直在从社区获取开源的便利,也深感社区力量的重要性,今天开源一个应用基础框架AA.FrameWork,也算是回馈社区,做出一点点贡献,希望能够帮助类似当年入行的我. AA.FrameWork ...

  2. .Net Core 分布式微服务框架介绍 - Jimu

    .Net Core 分布式微服务框架介绍 - Jimu 系列文章 [原文] .Net Core 分布式微服务框架介绍 - Jimu [原文] .Net Core 分布式微服务框架 - Jimu 添加 ...

  3. Jimu : .Net Core 分布式微服务框架介绍

    一.前言 近些年一直浸淫在 .Net 平台做企业应用开发,用过的 .Net 框架不多(具体数量不清,印象深刻的有 Asp.Net MVC,WPF,其他很多都是基于微软开发的框架做些封装而形成新的框架, ...

  4. 手把手引进门之 ASP.NET Core Entity Framework Core(官方教程翻译版 版本3.2.5)

    以下是手把手引进门教程,基于 ASP.NET Core, Entity Framework Core ,ABP 框架 创建Web 应用, PS: 自带自动的测试模块哦. 样例下载 (上 github  ...

  5. Net Core下多种ORM框架特性及性能对比

    在.NET Framework下有许多ORM框架,最著名的无外乎是Entity Framework,它拥有悠久的历史以及便捷的语法,在占有率上一路领先.但随着Dapper的出现,它的地位受到了威胁,本 ...

  6. 使用Angular 4、Bootstrap 4、TypeScript和ASP.NET Core开发的Apworks框架案例应用

    最近我为我自己的应用开发框架Apworks设计了一套案例应用程序,并以Apache 2.0开源,开源地址是:https://github.com/daxnet/apworks-examples,目的是 ...

  7. abp mysql .net core_ABP .Net Core Entity Framework迁移使用MySql数据库

    一.迁移说明 ABP模板项目Entity Framework Core默认使用的是Sql Server,也很容易将数据库迁移到MySQL,步骤如下. 二.迁移MySQL步骤 1. 下载项目 请到 ht ...

  8. 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 ...

  9. Core Telephony Framework

    Core Telephony Framework(核心通讯框架) 概述: 这个库的前缀为CT(Core Telephony),主要用来获得用户通讯相关信息,我们可以使用这些信息来定义外部接口以便自己使 ...

最新文章

  1. 在android上移植ios
  2. Codeforces 1108 E2(线段树+思维)
  3. android手机连接无线路由器上网设置,怎样用手机设置无线路由器上网?
  4. html5 - canvas
  5. qemu+linux+x86+64,kvm 内部错误:无法找到适合 x86_64 的模拟器
  6. 基于改进SSD算法的小目标检测与应用
  7. 禁止html页面无法粘贴复制,javascript中如何禁止复制粘贴?
  8. Docker学习总结(31)——使用Maven插件构建docker镜像
  9. 二叉搜索树-php实现 插入删除查找等操作
  10. 电商项目--使用GitHub进行版本管理,完美衔接idea详细流程,Java初阶知识点,完整步骤
  11. Java基础视频教程
  12. 计算机一级pdf百度云,计算机一级(实操).pdf
  13. 《做难而正确的事》有感
  14. Ext js 下拉框模糊匹配查询,并支持反复输入检索
  15. 读书笔记——极简算法史:从数学到机器的故事 - 吕克·德·布拉班迪尔
  16. 2020联发科技笔试面试经验
  17. 1602液晶显示摄氏度
  18. 秀场精灵陈梓桐 受邀担任第六季完美童模全球总决赛首席体验官
  19. C语言教程基础训练(一):如何计算圆的周长
  20. 读大学,究竟读什么:一名25岁的董事长给大学生的18条忠告

热门文章

  1. Python_模块介绍
  2. iview-admin webpack打包总结的几个问题
  3. Embedding Lua, in Scala, using Java(转)
  4. XamarinForms教程构建XamarinForms开发环境
  5. Java 连接数据库(SQL Server)ODBC配置详情
  6. 华御密盾智能防信息泄密系统
  7. 1231. The Embarrassed Cryptography
  8. 自作的WM文件浏览器
  9. 基于SSM实现个人博客系统
  10. 基于springboot实现高校学生健康档案管理系统