Skip to content

Upgrade notes

so edited this page Nov 27, 2021 · 4 revisions
  • 2021-11-27
  • 2021-6-25
    • 参数类型支持 ParamDirection.ReturnValue
    • 版本更新至 v4.16.0
  • 2021-5-28
    • 异步操作优化(强烈建议升级到此版本)
    • 版本更新至 v4.15.0
  • 2021-1-31
    • 实体支持对指定字段忽略更新(UpdateIgnoreAttribute)
    • 版本更新至 v4.12.0
  • 2021-1-23
    • 支持设置方法解析器
    • 版本更新至 v4.11.0
  • 2020-11-27
    • 修改 Query.Any() 方法有可能引起的 sql 慢查询问题
    • 修改个别 bug
    • 版本更新至 v4.9.0
  • 2020-7-16
    • 修改bug:#183
    • 版本更新至 v4.8.0
  • 2020-6-21
    • 性能优化
    • 版本更新至 v4.7.0
  • 2020-5-19
    • 修改 DbParam.Value 和 DbParam.Type 都为 null 时的 bug
    • 版本更新至 v4.6.0
    • :此版本开始对包 System.Threading.Tasks.Extensions 有依赖,如出现安装失败的情况,在项目里指定安装 Chloe 依赖的 System.Threading.Tasks.Extensions 版本或更高级就好
  • 2020-5-6
    • 修改 Sum 函数 bug(影响范围Chloe.SqlServer v4.5.0) #161
    • Chloe.SqlServer 更新至 v4.5.1
  • 2020-4-12
    • IDbContext、IQuery 支持异步操作方法
    • 修改些许 bug
    • 版本更新至 v4.5.0
    • 注:此版本不再支持 .Net Framework4.0(但支持4.5+),如需在 .Net Framework4.0 下使用,请引用 Chloe.ORM v4.1 或以下版本
  • 2020-3-29
    • 添加 IQuery.IncludeAll() 方法
    • 版本更新至 v4.1.0
  • 2020-1-12
    • 支持导航属性,使用方式请参考 github 上的 demo
    • 支持过滤器,使用方式请参考 github 上的 fluent mapping
    • Sequence 支持指定 schema
    • 支持行版本乐观并发控制,参考 Chloe.Annotations.ColumnAttribute.IsRowVersion
    • DbContext.Session 支持传入外部事务
    • 取消 Chloe.SqlServer.Annotations.TimestampAttribute,改用 Chloe.Annotations.ColumnAttribute.IsRowVersion
    • IJoiningQuery 改为 IJoinQuery
    • 版本更新至 v4.0
    • 注:此版本较之前版本有些许不兼容,但影响不大,注意变更项即可
  • 2019-11-7
    • 修改bug #129
    • 版本更新至 v3.10.0
  • 2019-5-12
    • 修改bug #90
    • Chloe.Oracle 支持触发器自增字段(AutoIncrementAttribute) #86
    • 重构 InserRange 接口
    • 版本更新至 v3.9.0
  • 2019-3-23
    • Chloe.SqlServer: 支持 timestamp 类型映射,参考:Chloe.SqlServer.Annotations.TimestampAttribute 特性
    • 版本更新至 v3.8.1
  • 2019-3-20
    • DbContext.SqlQuery 方法支持 ColumnAttribute 特性映射
    • 增加 IDbContext.UseTransaction() 方法
    • lambda 中支持 new 数组操作
    • 版本更新至 v3.8.0
  • 2019-3-14
    • 代码优化
    • 版本更新至 v3.6.0
  • 2019-2-27
    • 修改 Chloe.Oracle v3.3-v3.4.2 插入数据存在的bug
    • Chloe.Oracle 版本更新至 v3.4.3
  • 2019-1-20
    • GroupBy 方法参lambda中支持 new 匿名类操作,如:query.GroupBy(a => new { a.CityId, a.Age })
    • 代码优化
    • 版本更新至 v3.4.0
  • 2019-1-3
    • 支持 case when 操作,具体参考:https://github.com/shuxinqin/Chloe/blob/master/src/Chloe/CaseWhen.cs
    • 新增值比较函数 Sql.Compare(T value1, CompareType compareType, T value2),可支持字符串大小于比较
    • 查询时支持 with nolock/updlock,用法参考 DbContext.Query() 方法重载
    • 优化oracle插入:利用 returning into 语法返回序列值
    • 版本更新至 v3.3.0
  • 2018-11-7
  • 2018-11-6
    • DbContext.InsertRange 方法增加参数 table
    • SqlServer 插入时,使用 SELECT @@IDENTITY 获取返回的自增值(3.0版本使用的是 output.inserted.Id,如果表设置了触发器的话会报错)
    • 版本更新至 v3.2.0
  • 2018-6-24
    • 支持 fluent mapping,使用方法参考 https://github.com/shuxinqin/Chloe/blob/master/src/ChloeDemo/Program.cs#L22
    • 支持用户定义数据库函数(Chloe.Annotations.DbFunctionAttribute)
    • Chloe.SqlServer:支持 SqlServer2012 序列
    • 支持 PostgreSQL 数据库
    • 注:在 v3.0 版本中,实体特性(TableAttribute,ColumnAttribute...)命名空间由 Chloe.Entity 变更为 Chloe.Annotations,相对 v2.* 有些许不同,已用 v2.* 版本的项目谨慎升级
    • 版本更新至 v3.0.0
  • 2018-6-23
    • 修改如果实体指定了 Schema,执行插入、更新、删除操作时不带 Schema 的 bug
    • 版本更新至 v2.28.0
  • 2018-4-28
    • 修改 ReflectionExtension.SetMemberValue 方法始终抛出异常的 bug
    • 版本更新至 v2.27.0
  • 2018-3-25
    • 移除过时类 AggregateFunctions 和 DbFunctions
    • 版本更新至 v2.26.0
  • 2018-3-11
    • 修改在lambda中使用子查询作为相等判断的操作数时生成复杂的sql影响效率问题,如q.Where(a => a.Id == context.Query().First().Id)
    • 版本更新至 v2.25.0
  • 2018-2-3
    • 新增API:IDbContext.SqlQuery(string sql, object parameter)
    • IDbContextServiceProvider -> IDatabaseProvider
    • 版本更新至 v2.24.0
  • 2018-1-6
    • 修改 IQuery.Average 部分方法的返回类型(所有Average方法将返回可空类型,避免当数据量为空时报错)
    • 标记 AggregateFunctions 和 DbFunctions 类 ObsoleteAttribute,取而代之使用 Chloe.Sql
    • 版本更新至 v2.23.0
  • 2017-11-20
    • 新增api:IJoiningQuery.Where()
    • lambda中使用相等(==)或不相等(!=)判断考虑数据库null值问题,如 a.Name == a.XName 会被翻译成 a.Name == a.XName or (a.Name is null and a.XName is null);a.Name != a.XName 会被翻译成 a.Name <> a.XName or (a.Name is null and a.XName is not null) or (a.Name is not null and a.XName is null)
    • 增加判断相等和不等api:Sql.Equals(T value1, T value2),Sql.NotEquals(T value1, T value2),此两个接口不会考虑数据库null值问题
    • 整合 .NET CORE 和 .NET Framework nuget安装包,统一使用安装命令 Install-Package Chloe.xxx,即 .NET CORE 版不再使用额外的安装包 ChloeCore.xxx
    • 版本更新至 v2.22.0
  • 2017-10-27
    • 支持 string.Replace()
    • 版本更新至 v2.21.1
  • 2017-10-20
    • 支持数据库 int64 类型数据映射到枚举
    • 优化 'IN' 查询
    • 性能优化
    • 版本更新至 v2.21.0
  • 2017-10-11
    • fix bug:对于实体包含类型为double,float,decimal的属性,调用 IDbContext.InsertRange() 方法插入数据时,生成错误sql导致插入数据有误。
    • 版本更新至 v2.19.0
  • 2017-9-25
    • 支持Distinct:IQuery.Distinct()
    • 支持取负操作:a=> -a.Id
    • 修改查询如:query.Take(10).GroupBy(a => a.Id) ,先Take或Skip,然后在GroupBy操作,生成错误sql的bug
    • 丰富子查询,支持 exists(select id from ...),in(select id from ...) 等操作,具体用法:https://github.com/shuxinqin/Chloe/blob/master/src/ChloeDemo/MsSqlDemo.cs#L212
    • 版本更新至 v2.18.0
  • 2017-9-18
    • 新增api:IDbContext.InsertRange()
    • Chloe.SqlServer:支持 SqlBulkCopy 批量插入数据接口,MsSqlContext.BulkInsert()
    • Chloe.Oracle:对于 a => a.Name == "" 将被翻译成 Name is null
    • 版本更新至 v2.17.0
  • 2017-9-3
    • api 'IDbContext.SqlQuery()' 的泛型参数支持 dynamic 类型
    • 在 lambda 中支持使用'ToString()'方法(仅部分类型)
    • 版本更新至 v2.16.0
  • 2017-8-24
    • 支持 .NET Core2.0
    • 版本更新至 v2.15.0
  • 2017-8-12
    • 新增api:IGroupingQuery.OrderBy() 和 IGroupingQuery.OrderByDesc()
    • 版本更新至 v2.14.0
  • 2017-8-10
    • lambda 表达式中支持 decimal 类型数值相加
    • 版本更新至 v2.13.0
  • 2017-7-9
    • 实体支持多主键
    • 版本更新至 v2.12.0
  • 2017-7-6
    • issue#18:支持数据库 byte 类型映射到枚举
    • 修改Chloe.MySql、ChloeSQLite BUG:在 lambda 表达式树中使用 'bool.Parse("1")' 方法时生成错误 sql
    • 版本更新至 v2.11.0
  • 2017-6-18
    • 增加更易用的多表连接查询接口 DbContext.JoinQuery
    • 修改连续调用 Skip 方法时生成错误的 sql 语句 bug,如 IQuery.Skip(10).Skip(5)
    • 版本更新至 v2.10.0
  • 2017-6-15
    • 支持插入无主键的实体
    • 将特性 SequenceAttribute 命名空间修改为 Chloe.Entity,同时将其移到 Chloe/Entity 文件夹下
    • 增加 Add DbExpressionType.Coalesce,修改 ?? 操作符生成sql策略: 如 a.Age??18 将会被翻译成相应的数据库函数,如 ISNULL(Age,18)
    • 修改 IDbSession.BeginTransaction() 的实现:之前版本其内部统一使用 IsolationLevel.ReadCommitted,现修改为调用数据库驱动的无参方法,即 DbConnection.BeginTransaction()
    • 版本更新至 v2.9.0
  • 2017-6-4
    • CURD 支持指定表名
    • Chloe.SQLite 增加读写锁
    • 修改BUG:当枚举类型不是 int 类型时,将枚举值转换为数据库值报错
    • 版本更新至 v2.8.0
  • 2017-5-21
    • 特性 TableAttribute 支持设置 Schema
    • 修改issue#14 Query().Sum 的bug
    • 略微调整字符串相加生成的sql策略
    • 版本更新至 v2.7.0
  • 2017-4-8
    • 特性 ColumnAttribute 增加 DbType 和 Length
    • 支持注册映射类型
    • 在lambda表达式树中支持取模运算符
    • DbContext.SqlQuery() 移除对泛型 T 的 new() 约束
    • 支持数据库 int16 类型映射到 C# 枚举类型
    • Chloe.Oracle:支持数据库 int16 类型映射到 C# 的 bool 类型
    • IGroupingQuery.ThenBy() 更改为 IGroupingQuery.AndBy()
    • 版本更新至 v2.6.0
  • 2017-3-3
    • 简化连接查询操作#9:IJoiningQuery 接口增加多个重载方法,支持 query.LeftJoin((a, b) => a.SN == b.UserSN).LeftJoin((a,b,c) => b.Id==c.BId)... 写法
    • 移除 DbContext.Query() 和 DbContext.QueryByKey(object key, bool tracking = false) 的泛型 TEntity 约束(where TEntity : new()),改为抛出异常的方式,即当传入的 TEntity 泛型不含有空构造函数时会报异常提示
    • 修复bug:执行分组查询如 g = g.Having(a => true); 时,解析 a => true lambda表达式树生成错误 sql 问题
    • 移除废弃的接口,DbContext.CurrentSession 和 DbContext.Update(Expression<Func<TEntity, TEntity>> body, Expression<Func<TEntity, bool>> condition)
    • 更改开源协议:由 apache 2.0 更改为更加宽松的 MIT 开源协议
    • 版本更新至 v2.5.0
  • 2017-1-19
    • 支持在lambda中使用Nullable.HasValue 和 obj.Equals(object obj)
    • 版本更新至 v2.4.0
  • 2017-1-6
    • 增加 sql 拦截器功能
    • 修复问题:.Net Core 版本中通过 DbContext.SqlQuery() 或 IDbSession.ExecuteReader() 方法调用存储过程,如果有输出参数(output),方法执行完得不到返回的参数值
    • 版本更新至 v2.3.0
  • 2016-12-20
    • Fixes bug: 执行查询如 context.Query().Select(a => new User() { Id = a.Id, Age = a.Age }).Where(a => a.Id == 1).ToList();,其中,User.Id 是继承属性,当调用投影映射 Select 方法 Id=a.Id 后,后续的Where或其它方法lambda中用到Id这个属性,会出现异常问题。
    • 版本更新至 v2.2.1
  • 2016-12-18
    • 修改内容:增加API IDbContext.QueryByKey(object key) 和 IDbContext.DeleteByKey(object key)
    • 版本更新至 v2.2.0
  • 2016-12-10
    • 修改内容:如果一个继承属性出现在 IQuery.Select 方法的 lambda 中,会出现空引用异常,现已修复
    • 版本更新至 v2.1.2
  • 2016-12-7
    • 修改内容:InternalDbSession 中的 IDbCommand 是单例可重用的,所以,每次调用 PrepareCommand 方法时需要清掉上次执行的残留参数,即执行 cmd.Parameters.Clear()(主要防止以下“特俗”情况:当执行 sql 过程出现异常,会来不及调用 cmd.Parameters.Clear(),就会出现残留的参数,为了保证每次使用 IDbCommand 不受上次异常情况下的影响,所以得清除一下上次残留的参数)
    • 版本更新至 v2.1.1
  • 2016-12-4
    • 支持 Oracle 数据库
    • 实体支持继承
    • 支持存储过程
    • 重命名:NotAutoIncrementAttribute --> NonAutoIncrementAttribute
    • 废弃 DbContext.CurrentSession 属性,取而代之 DbContext.Session
    • IQuery 接口增加 TakePage 方法
    • 内部代码结构调整
    • 版本升级至 v2.1.0
  • 2016-8-26
    • 版本升级至 v2.0.0
    • 发布 ChloeCore.MySql NuGet 包
  • 2016-8-8
    • 支持 SQLite 数据库
    • .NET Ver update: v1.0.2
    • .NET Core Ver update: v1.0.4
  • 2016-8-1
    • 支持 .NET Core
    • 发行 NuGet 包
      • .NET Ver: v1.0.1
      • .NET Core Ver: v1.0.3
  • 2016-7-25
    • 支持 MySql 数据库
  • 2016-7-4
    • 正式开源