开源的来了,懒人程序员的福音,.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> /// 事务代码详细…
一: 单表模型驱动查询 如下示例代码演示: // 根据ID 查询: var studentquery = db.FindQuery<TStudentInfo>().QueryById(12); #region 根据条件全量查询 学生姓名为 HJB 的同学 BList<TStudentInfo> students = db.FindQuery<TStudentInfo>().Where(p => p.FName == "HJB").Find();…
在具体数据库操作之前,我们先准备好四张表以及相对应数据库操作模型: 学生表,年级表,班级表,学分表.示例数据库表,如下代码(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…