开源的来了,懒人程序员的福音,.NET 生态闭环太缺开源精神了, 拥抱开源! 前言: 本人不是不喜欢现有ORM的轮子,而是发现现有的ORM 的都不太符合开发人员的一些习惯.现有的ORM 要么功能太冗余,要么不符合开发人员偷懒的性格.我认为,什么是促使开发工具的进步,就是人的惰性.我们追求的开发配套工具,需要高效,简单,易用.别跟我扯里面的深奥的道理.我只希望好用,性能高,给我开发带来乐趣. 如果网上开源不符合要求,那么就自己造轮子. 在进入正式主题之前,我还是来说下我不太喜欢EF 的原因,EF…
Bitter.Core 在聚联/分页聚联查询的时候,采用原生的MSSQL, MYSQL 语句查询,做过复杂高级项目的人知道,原生的聚合查询代码执行效率更高,更快,更容易书写,开发量最少. 借助原生的MSSQL,MYSQL 客户端工具,将聚合查询的SELECT 语句写好,直接扔进Bitter ORM  框架就行了. 业务层只关心写好相对应的 SELECT SQL 语句. 如下代码示例: #region //聚联条件分页查询 var type = 1; //非关键代码,用于下面演示代码用 var S…
Bitter.Core NETCore 相当的简单易用,下面附上使用示例: 数据中连接:请在你的NETCORE 项目中 创建:Bitter.json 配置文件,然后追加如下配置内容: MSSQL 连接(读写分离配置对),如果读写分离都指向同一个库的话,那么也需要这样配置,只是,配置的Value 的字符串保持一致就行. { "connectionString":[ { "dbType": "System.Data.SqlClient", "…
Bitter.Core 内置了支持大部分的 linq 的条件表达式.基本上符合我们 where 条件所需.Bitter.Core 的支持 表达式内置  扩展 有: EndsWith    在Sql 解析成:  '%s' StartsWith   在Sql 解析成:  's%' Contains     在Sql 解析成:  '%s%' In                在Sql 解析成:     IN (1,2,34) NotIn          在Sql 解析成:   NOT IN  (1…
有时候我们业务层需要记录 数据库表更改之前的值和更改之后的值的记录集合--此过程在 Bitter.Core 中有强有力的支持.Bitter.Core 字段收集器提供了方便简单易用的 收集对象在修改之前和修改之后所有对象内字段变更记录的集合.当然,如果涉及 没有变更的字段,将不会显示在变更记录集合中.示例代码如下: /// <summary> /// 字段变更收集器 /// </summary> public static void FildUpdateCollector() { /…
Bitter 框架的 Log 全部采用 NLog 日志组件.Bitter.Core 的 执行语句的日志记录 Nlog 日志级别为:info.  如果想要查看Bitter.Core 的执行SQL,先要去开启 NLog.Config 中的配置:如下图所示 下面看一下运行日志输出:…
有时我们在聚合查询中,经常会有复杂的聚联查询.有时表的聚联查询SQL 子句比较复杂,DBA 会经常告诉们,能否通过WITH 子句优化.WITH 子句,是对SQL 聚联查询的优化.Bitter.Core 支持对MSSQL WITH 子句的支持.示例代码如下: 示例DEMO: public static List<TScoreSearchDto> With_Page_Demo(int type, string studentname) { #region //聚联条件分页查询 年级的LEFT JO…
Bitter.Core 编写事务相当简单,Bitter.Core 尽可能的将代码编写量降为最低,例外一方方面保证客户主观能控制代码.Bitter.Core 事务提交,支持Builkcopy事务,原生事务以及多次提交失败回滚,支持新增种子码事务. 下面附上详细的事务提交 教程--教程Demo 在 案例 Demo 中都有提供 (Github:https://github.com/DavidChild/Bitter.Core.Sample.git): /// <summary> /// 事务代码详细…
在具体数据库操作之前,我们先准备好四张表以及相对应数据库操作模型: 学生表,年级表,班级表,学分表.示例数据库表,如下代码(MSSQL 为例) --学生表 CREATE TABLE t_student ( FID INT IDENTITY(1,1) PRIMARY KEY, --主键 FName VARCHAR(100), --名称 FAage INT,--年龄 FClassId INT, --班级Id FAddTime DATETIME DEFAULT GETDATE() ) --学分表 CR…
Bitter Orm 在操作数据库增删改的时候,支持模型驱动和直接执行裸SQL 操作,示例代码如下: 一:模型驱动(增删改) /// <summary> /// 插入,删除,更新示例(模型驱动) /// </summary> public static void DemoForOp() { var d = db.FindQuery<TStudentInfo>().Where(p => p.FName == "DavidChild").Find(…
一: 单表模型驱动查询 如下示例代码演示: // 根据ID 查询: var studentquery = db.FindQuery<TStudentInfo>().QueryById(12); #region 根据条件全量查询 学生姓名为 HJB 的同学 BList<TStudentInfo> students = db.FindQuery<TStudentInfo>().Where(p => p.FName == "HJB").Find();…
当我们查询之前,我们先构造一个查询对象的输出DTO.如下图代码: public class TScoreSearchDto { /// <summary> /// 分数 /// </summary> public Int32 FScore { get; set; } /// <summary> /// 学生名称 /// </summary> public String studentName { get; set; } /// <summary>…
随笔分类 - asp.net core系列篇 asp.net core系列 68 Filter管道过滤器 摘要: 一.概述 本篇详细了解一下asp.net core filters,filter叫"筛选器"也叫"过滤器",是请求处理管道中的特定阶段之前或之后运行代码.filter用于处理横切关注点. 横切关注点的示例包括:错误处理.缓存.配置.授权和日志记录. filter可以避免重复代码,通过Attribut阅读全文 posted @ 2019-07-16 09:…
ChuanGoing 2019-09-10 距离上一篇近一个月时间,断断续续才把本篇码完,后面将加快进度,争取年度内把本系列基本介绍完成,同时督促本人持续学习. 本篇学习曲线: 1.初识Dapper 2.DbConnection 3.CommandBuilder实现单表操作(略) 4.演示 初识Dapper Dapper是一个轻量级/高性能的ORM,核心功能是利用Emit反射获取IDataReader中的数据.我们可以利用它的对象关系映射实现简单CURD操作,或者直接用SQL语句实现复杂场景的C…
前言:由于公司占时没有运维,出于微服务的需要,Apollo只能先装在windows 阿里云上跑起来,由于环境及网络等问题,在安装过程中遇到很多坑,算是一个个坑填完后,最终实现. 一. java jdk环境 java jdk 1.8下载地址: https://www.oracle.com/java/technologies/javase-jdk8-downloads.html   建议JDK安装目录不要带有中文.[空格].特殊符号等,例如:Program Files 这种会导致使用Quick St…
前面讲了ASP.NET Core 的项目结构,查看完整的ASP.NET Core系列文章:https://www.cnblogs.com/zhangweizhong/category/1477144.html ASP.NET Core 里面一个比较重要的就是Startup.cs 类,包括加载配置, 通过依赖注入加载组件, 注册路由等都在此处进行.今天就来聊一聊Startup 类的作用和用法. 与 ASP.NET 对比,ASP.NET Core 最显著的变化之一就是配置应用程序的方式,Global…
目录: 1.环境搭建 2.ADO.Net 基础 3.ASP.Net Core 基础 4.MD5.Sha256.AES 加密 5.实现登录注册功能 6.实现目录管理功能 7.实现文章发布.编辑.阅览和删除功能 8.实现文章回复功能 9.实现文章点赞功能 10.正式发布文章系统 1.前言 因为本系列是.NET Core 系列,本文中所有叙述的是基于.NET Core 1.1版本的数据访问层接口.为什么需要强调是.Net Core 1.1呢?由于在2017年Q3发布的.NET Core 2.0中通过官…
为了支持"首届dnc开源峰会"(dncNew.com)顺利举办,本人<.net core系列课程>进行一波优惠,每个课程优惠在立即购买上方,领取现金券即可.课程地址为腾讯课堂:https://gsw.ke.qq.com/   1.<asp.net core精要讲解>https://ke.qq.com/course/265696 课程介绍:      本人从.net core beta版开始使用研究的,项目是从1.0开始开发,并应用于生产环境的,本课程是以asp.…
一.概述 目前对于.net的数据访问ORM工具很多,EF和EF Core是一个重量级的框架.最近在搭建新的项目架构,来学习一下轻量级的数据访问ORM工具Dapper.Dapper支持SQL Server,MySQL,Sqlite,SqlCE,Firebird等的高性能Micro-ORM(微ORM框架).最新版本是1.60.16. Dapper扩展了IDbConnection接口,例如实现一个查询方法,Dapper定义的一个Query查询方法如下: public static IEnumerabl…
.NET Core系列 : 1..NET Core 环境搭建和命令行CLI入门 介绍了.NET Core环境,本文介绍.NET Core中最重要的一个配置文件project.json的相关内容.我们可以使用.NET Core 的dotnet 命令行接口(CLI)dotnet new命令创建一个应用,也可以用Visual Studio 2015 update 3创建一个应用,他们都有一个project.json ,它是项目的配置文件,类似之前的*.csrpoj文件.Project.json 是一个…
在上一篇"拥抱.NET Core系列:MemoryCache 初识"中我们基本了解了缓存的添加.删除.获取,那么今天我们来看看缓存的过期机制.这里和上篇一样将把"Microsoft.Extensions.Caching.Memory"简称为MSCache. MSCache项目 MSCache目前最新的正式版是 2.0.0,预览版是2.1.0,会与.NETCore 2.1一起发布.本篇用了2.0.0版本 开源在GitHub上,仓库地址是:https://github.…
在上一篇“<拥抱.NET Core系列:MemoryCache 缓存选项>”我们介绍了一些 MSCache 的机制,今天我们来介绍一下 MSCache 中的缓存域. MSCache项目 MSCache 目前最新的正式版是 2.0.0,预览版是2.1.0,会与 .NETCore 2.1 一起发布.本篇用了2.0.0版本 开源在 GitHub 上,仓库地址是:https://github.com/aspnet/Caching NuGet地址为:https://www.nuget.org/packa…
mybatis入门系列三之类型转换器 类型转换器介绍 mybatis作为一个ORM框架,要求java中的对象与数据库中的表记录应该对应 因此java类名-数据库表名,java类属性名-数据库表字段名,java类属性类型-数据库字段类型 前面两个都容易设置,但是第三点要求经常会出现java类型和数据库的存储类型不一样, 例如java类型是String,数据库中存储的是char.varchar.text 对于一般常见的类型对应,mybatis已经内部包含了类型转换器,使String类型的java属性…
阅读目录 MSCache项目 缓存域 写在最后 在上一篇“<拥抱.NET Core系列:MemoryCache 缓存选项>”我们介绍了一些 MSCache 的机制,今天我们来介绍一下 MSCache 中的缓存域. MSCache项目 MSCache 目前最新的正式版是 2.0.0,预览版是2.1.0,会与 .NETCore 2.1 一起发布.本篇用了2.0.0版本 开源在 GitHub 上,仓库地址是:https://github.com/aspnet/Caching NuGet地址为:htt…
阅读目录 MSCache项目 MSCache提供的过期方式 绝对时间到期 滑动时间到期 自定义过期策略 过期策略组合拳 缓存过期回调 写在最后 在上一篇”拥抱.NET Core系列:MemoryCache 初识”中我们基本了解了缓存的添加.删除.获取,那么今天我们来看看缓存的过期机制.这里和上篇一样将把“Microsoft.Extensions.Caching.Memory”简称为MSCache. MSCache项目 MSCache目前最新的正式版是 2.0.0,预览版是2.1.0,会与.NET…
[前言] 本系列主要讲述sonarqube的安装部署以及如何集成jenkins自动化分析.netcore项目.目录如下: SonarQube系列一.Linux安装与部署 SonarQube系列二.分析dotnet core/C#代码 SonarQube系列三.Jenkins集成SonarQube(dotnetcore篇) [实现功能] 这篇文章将要介绍的主要内容如下: 将上一篇文章中的sonarqube命令整合为shell脚本 将 shell 脚本集成到jenkins中 [整合sonarqube…
ChuanGoing 2019-11-11  距离上篇近两个月时间,一方面时因为其他事情耽搁,另一方面也是之前准备不足,关于领域驱动有几个地方没有想通透,也就没有继续码字.目前网络包括园子里大多领域驱动设计的文章,关于仓储者一层都没有详细的说明,只是简单的一笔带过:领域驱动不关心具体的持久化如何落地.但是,作为"猿人类"就不可避免的绕不开持久化.本篇将会简略的介绍利用Dapper这个轻量级的ORM来实现如何持久化. 本篇学习曲线: 1.领域模型 2.领域仓储 3.简单服务实现 领域模型…
ChuanGoing 2019-11-24 asp.net core系列已经来到了第五篇,通过之前的基础介绍,我们了解了事件订阅/发布的eventbus整个流程,初探dapper ORM实现,并且简单的介绍了领域模型.领域仓储及服务实现,结合上一篇的日志.错误处理及事务和本篇将要介绍的权限,大致的可以形成一个简单的后端系统架构.当然这些都是零散的一些技术概念的介绍,后面如果有时间的话,我想详细的介绍下如何利用领域驱动来实现一个实际案例. 话不多讲,下面来看下本篇的学习曲线: 1.认识Identi…
2016.6.27 微软已经正式发布了.NET Core 1.0 RTM,但是工具链还是预览版,同样的大量的开源测试库也都是至少发布了Alpha测试版支持.NET Core, 这篇文章 The State of .Net Core Testing Today 就将各个开源测试库的目前进展进行了汇总.本文我们的目的是在我们构建我们应用程序的时候能够进行测试,如何使用XUnit结合你可以通过为你的项目添加不同的测试用例NSubstitute进行单元测试,同时对整个项目进行集成测试.这次我们使用Vis…
通过前面的两篇文章,我们已经知道如何创建新的项目,如何生成并运行我们的应用程序,也知道(大致) project.json 文件中的内容是什么意思.但大多数项目往往也需要多个项目或引用的类库.我们要创建类库项目和应用程序项目.在应用程序中,如何引用我们的类库. 创建应用项目 File -> New Application 这个很熟悉了吧,输入下面的命令: mkdir DotnetNewApp cd DotnetNewApp dotnet new dotnet restore dotnet buil…