FreeSql v0.12.21 Release Notes

Release Date: 2019-12-16 // over 4 years ago
    • 增加 达梦数据库 ODBC 适配,和单元测试,支持 CodeFirst 模式开发;
    • 增加 FreeSql.Generator dotnet-tool 命令行实体类生成工具;
    • 增加 Repository/DbContext SaveMany 方法实现一对多,子数据的完整保存;
    • 增加 IEnumerable<(T1, T2)>.Contains(col1, col2) 扩展方法,实现自定义表达式解析多列无法 IN 的问题;
    • 增加 RawValueAttribute 实现自定义表达式时,使用原始值传入参数;
    • 增加 DateTime 扩展方法 Between 和 BetweenEnd 自定义表达式;
    • 增加 Where In 表达式解析;wiki
    • ⚡️ 增加 ISelect.ForUpdate 排他更新锁(根据数据库类型的规则,见代码注释);
    • 增加 实体特性 [Column(ServerTime = DateTimeKind.Utc)] 使用数据库时间执行插入数据;wiki
    • 增加 ICodeFirst.IsGenerateCommandParameterWithLambda 选项,开启表达式解析的命令参数化;wiki
    • 增加 FreeSqlBuilder.UseConnectionFactory 自定义数据库连接对象的创建方法;
    • 增加 UnitOfWork 静态属性 DebugBeingUsed,用于生产环境监视正在使用中的事务;
    • 👀 增加 BaseEntity 物理删除方法 Delete(true);

    • 完善 SqlServer WithLock 功能,组合多种使用 | 枚举相联;
    • 补充 同线程时间 fsql.Transaction 事务等级参数的传入;
    • 兼容 Vb.Net 表达式解析字符串 = 判断;
    • 优化 IncludeMany 级联查询支持异步适配(之前是同步方式);
    • 优化 MaxLength 功能,并且增加 [Column(StringLength = 100)] 同等的特性功能;
    • 优化 GlobalFilter Apply 自动重命名表达式参数名,避免内容重复问题;
    • 优化 ReadAnonymous 映射类型不一致的容错;
    • 优化 GlobalFilter 过滤器表达式 bool 解析;
    • 优化 ExpressionCallContext 可设置、附加参数化对象;

    • 修复 ISelect.AsTable union all 查询对 count/max/min/avg/sum 的别名 bug;
    • 修复 DbContext TrackList 对匿名对象处理的 bug;#150
    • 修复 Oracle Dbfirst 字段可空、和主键判断的 bug;
    • 修复 ToList((a,b) => new { a, b }) 当 b 为 null 的时候,应该整个 b 为 null;(导航属性没这个问题)
    • 修复 Sqlite attachs 附加数据库别名 bug;
    • 修复 Select<T1, T2> AsTable 析构函数处理可能产生 bug;
    • 修复 多表查询 WhereCascade,如果 Join 没有 On 条件,可能导致生成的 SQL 多了一个 AND 出错;
    • 修复 Dto 映射,在二级即 Dto 属性上又 new Dto 的时候,错误的又重复映射了全部字段;
    • 修复 ToList(a => new Dto { .. }) 在使用 GroupBy 之后报错的 bug;
    • 修复 表达式解析 Guid.NewGuid() 的错误;
    • 修复 Oracle/Sqlite IInsert.ExecuteInserted 方法,返回了被 clear 过后的 _source,其实本来也没意义;
    • 修复 注释迁移到数据库,在 asp.net 4.7 无效的问题;
    • 修复 批量插入 Values 数量限制超出的判断;
    • 修复 IncludeMany(a => a.x1.x2.Childs) 当 x1, x2 为 null 的报 null 错误;

    • ⏱ 调整 fsql.Transaction(Action, Timeout) 参数顺序;
    • 调整 SaveManyToMany 方法名为 SaveMany;
    • 移除 Lazy 延时加载动态代码中的 Newtonsoft.Json 依赖;