2026-05 — 3.3.2.5
- 自研对象映射器 MMapper 替代 AutoMapper(消除 CVE-2026-32933)
- 保留完整 AutoMapper 兼容 shim:
MapperConfiguration / IMapper / Profile / IQueryable.ProjectTo 全套支持,外部 NuGet 用户老代码零改动
- 详见《对象映射 MapTo / MMapper 完整指南》
2023-11-12 — 3.2.6.3
1. 链式语法增加 Select 方法,支持查询时按需挑字段:
ORM.Build<T>()
.Get(it => it.Where(o => o.Mark > 0))
.Select(o => new { o.Id, o.Name, o.Age })
.ToList();
2. 增加 SqlBulk 批处理
DataTable:
ORM.Build<T>().BulkCopy(dataTable);
List<T>:
var list = new List<T>();
ORM.Build<T>().BulkCopy(list, o => new { o.Id, o.Name, o.Age });
// 必须指定导入的字段
2022-11-04 — 3.2.2.5
1. 新增 V3 链式语法初始化
// 旧
new ORMFactory<T>();
// 新
ORM.Build<T>();
2. 增强 RunProc / RunSql:放开必须传自定义 Model 的限制,支持元组与 dynamic:
// 动态类型
ORM.Build<dynamic>(context).RunSql("select * from t_User").ToList();
// 元组
ORM.Build<(int Id, string Name)>(context)
.RunSql("select Id, Name from t_User")
.ToList();
3. 增加 AutoMapper 功能(已被 3.3.2.5 替换为 MMapper)
NT newData = data.MapTo<T, NT>();
2022-10-25 — 3.2.0.8
新增大于、小于智能动态拼接:DynamicGreaterThan / DynamicLessThan
// !=null:where Mark > 0 and Age > 20
// ==null:where Mark > 0
ORM.Get<T>(it => it.Where(o => o.Mark > 0 && o.Age.DynamicGreaterThan(20)));
// !=null:where Mark > 0 and Age < 20
// ==null:where Mark > 0
ORM.Get<T>(it => it.Where(o => o.Mark > 0 && o.Age.DynamicLessThan(20)));
2022-10-22 — 3.2.0.3
1. 新增智能动态拼接:DynamicIn / DynamicLike / DynamicEquals,传入值为 null 时自动忽略对应条件
// In
ORM.Get<T>(it => it.Where(o => o.Mark > 0 && o.Mobile.DynamicIn("111,222,333")));
// Like
ORM.Get<T>(it => it.Where(o => o.Mark > 0 && o.Mobile.DynamicLike("13666666666")));
// Equals
ORM.Get<T>(it => it.Where(o => o.Mark > 0 && o.Mobile.DynamicEquals("13666666666")));
2. MPageData 字段重命名:total / rows → TotalNumber / Data
3. OData 写法替换为 Dynamic 写法
2022-10-12
- 链式语法支持动态切换数据库或服务器
- 链式语法支持动态解析自定义查询字段
2022-10-08 — 3.2.0.0
新增链式语法。静态方法的多参数堆叠在大量场景下不够直观,因此引入流式 API,让组合更自由。
2019
新增 Lambda 动态拼接,替代旧的 GetWhere 写法:
expc.Add(it => it.Where(o => o.String1 == name));
expc.Add(it => it.Where(o => o.String2 == name));
2017 ~ 2018
陆续集成 Memcached、Redis、RabbitMQ、Ocelot、Consul 等主流组件。
2016 ~ 2017
经历了双十一、年末酬宾等大型节日的抢购与秒杀活动,期间不断完善读写分离、分表分库等能力。
2015-11 ~ 2016-01
用遍市面上的主流开源 ORM,各有优缺点。为了适应互联网快速发展期,基于 Dapper 打造了适合快速开发的 OrangeCloud.ORM。