FreeSql v0.11.23 Release Notes

Release Date: 2019-11-20 // over 4 years ago
    • 增加 ExpressionCallAttribute 特性,实现表达式函数自定义解析;wiki
    • 增加 IncludeMany 贪婪加载的时候可指定子表的字段,避免查询子表所有字段;
    • 增加 DbContext、Repository SaveManyToMany 方法,实现手工保存 ManyToMany 关联数据;wiki
    • 增加 IFreeSql.GlobalFilter 全局过滤器,wiki
    • 增加 AsTable 和 Repository 分表时的自动迁移分表功能;
    • 🔀 增加 ICodeFirst.SyncStructure(Type entityType, string tableName) 指定表名来迁移实体;

      fsql.CodeFirst.SyncStructure(typeof(Log), "Log_1"); //迁移到 Log_1 表fsql.CodeFirst.SyncStructure(typeof(Log), "Log_2"); //迁移到 Log_2 表

    • ⚡️ 增加 ISelect ToDelete/ToUpdate 方法,实现更复杂的删除/更新操作,wiki

    • 增加 SqlServer ISelect.WithLock 扩展方法,实现 with(nolock) 查询;

    • 增加 SqlServer IFreeSql.SetGlobalSelectWithLock 扩展方法,实现全局设置 with(nolock) 查询;

    • 🚚 增加 FreeSql.DbContext DbSet Remove 可根据 lambda 条件删除数据的方法;

    • 增加 FreeSql.Provider.Sqlite 对 Xamarin 环境下的适配;

    • 增加 MySql 特有功能 Insert Ignore Into;wiki

    • ⚡️ 增加 MySql 特有功能 On Duplicate Key Update 功能,wiki

    • ⚡️ 增加 PostgreSQL 特有功能 On Conflict Do Update 功能,wiki

    • 兼容 SqlServer nvarchar/varchar 表达式解析,分别解析为:N'' 和 '',优化索引执行计划;

    • 优化 Contains 表达式解析为 where in 自动拆分,防止大于 1000 的 SQL 错误,如下:

      var arr = Enumerable.Range(1, 1333).ToArray();var sql = fsql.Select<T>().Where(a => arr.Contains(a.Int)).ToList();//原来:where id in (1..1333)//现在:where id in (1..500) or id in (501..1000) or id in (1001..1333)

    优化 FreeSql.DbContext 构造方法,方便注入使用;

    ⚡️ 优化 Aop.AuditValue 审计过的值,IUpdate.UpdateColumns 即使不指定该列也会更新;

    优化 ManyToMany 中间表不需要指明 [Column(IsPrimary = true)] 特性;

    优化 实体类重写属性 new 如果类型与基类不一致,无法使用的问题;

    完善 SqlServer2005 环境跑通了所有单元测试;

    完善 所有参数化 object parms 可使用 IDictionary 类型传入;

    完善 ToList Dto 映射查询的规则;wiki


    • 修复 Where(a => bool && id > 0) bool 未解析正确的 bug;

    (之前大多数类似的表达都能解析,这次是一个特殊情况)

    • 修复 BaseRepository 析构时与工作单元的回滚逻辑 bug;#131
    • 修复 FreeSql.DbContext 析构方法的 bug,错误的回滚了外部 UnitOfWork;
    • 修复 MapType 属性的表达式解析 数组.Contains 得到是映射之前的值 bug;
    • 修复 MapType 属性 与 IncludeMany 变异功能未映射处理的 bug;
    • 修复 IsNulable 特性不生效的 bug;
    • 修复 SqlServer DbFirst、CodeFirst 查询实体表的列信息错误,当设置了表/列多个扩展属性时发生;
    • 🔒 修复 SqlServer2005 CodeFirst 迁移时,不支持 SET (LOCK_ESCALATION TABLE) 的错误(已做适配);
    • 修复 SqlServer2005 批量插入SQL语法错误,不支持 Values(),()(已做适配);
    • 修复 ReadAnonymous 读取数据设置只读属性的错误;#132
    • 修复 ISelect .From 方法之前使用 .Include 方法,导致生成的多表 JOIN 位置错误的 bug;

    • ⚡️ 移除 IUpdate/IDelete WhereExists 方法;
    • 移除 TableAttribute.SelectFilter 功能;