Releases: dotnetcore/FreeSql
Releases · dotnetcore/FreeSql
v1.4.0
- 增加 FreeSql.Provider.Dameng 基于 DmProvider Ado.net 访问达梦数据库;
- 增加 FreeSql.DbContext OnModelCreating 虚方法,实现在 DbContext 使用 FluentApi;
- 增加 FreeSql.DbContext 与 EFCore 相似的 FluentApi 对动态类型的处理;#281
- 移除 FreeSql.Extensions.EfCoreFluentApi,功能移至 FreeSql.DbContext;
- 增加 FreeSqlBuilder 自动识别 EFCore 实体特性 Key/Required/NotMapped/Table/Column;
- 增加 IInsert InsertColumns/IgnoreColumns 方法重载输入 string[];#275
- 增加 DbFirst 获取字段的默认值信息;
- 增加 FreeSql.Generator -Match 参数只生成匹配的表;
- 增加 FreeSql.Extensions.JsonMap FluentApi 扩展方法;#279
- 增加 DbFirst DbColumnInfo Position 属性,字段默认位置;
- 增加 UnitOfWorkManager 工作单元管理器,实现多种传播事务,移除 UnitOfWork.Current 静态属性;#289
- 增加 DbContextOptions.EnableGlobalFilter 设置是否在 DbContext/Repository 中启用全局过滤器(默认 true);
- 优化 主键 Guid 自动赋值的优先级,低于 Aop.AuditValue 事件(实现自定义 Guid 值);
- 优化 WhereDynamic 传入 string 的时候自动转为主键的类型值;
- 修复 ISelect.From 内部 WhereIf 二次表达式解析 bug;
- 修复 Guid -> MapType(string) 在 FreeSql.DbContext 的类型转换错误;
- 修复 表达式解析 Include 父子导航可能失败的 bug;
- 修复 实体类型为 char 时 ExpressionTree 读取失败 bug;#283
- 修复 IncludeMany 集合属性为 a.xx.Childs 时,可能出现错误;
v1.3.6
- 优化 DbContext/Repository Orm 属性进行 CURD 与自身事务相同【新突破】;#270
- 修复 MySql 字符串反斜杠无效的 bug;
- 修复 ExpressionCall 自定义表达式枚举类型入参转换出错;#269
- 修复 Oracle/Dameng 登陆名为数字开始 pk 命名问题;
- 增加 GroupBy Count(b.id) 指定字段统计;
- 增加 GroupBy ToDictionary 返回字段的查询方法,TKey 为 GroupBy 选择的对象;
- 调整 GroupBy 所有方法不使用 DTO 映射规则;
- 调整 IUpdate.SetDto 也支持 IgnoreColumns 的逻辑;
- 调整 ISelect linq to sql 和 queryable 实现依赖移至 FreeSql.Extensions.Linq;
v1.3.5
v1.3.4
- 调整 Repository 接口定义,合并为一个 IBaseRepository;
- 调整 移除对 System.ValueType 的依赖,减少版本冲突问题;(目前 FreeSql.dll 无任何依赖)
- 调整 Oracle StringLength/MaxLength -1 时候映射为 nclob;
- 调整 IInsert/IUpdate NoneParameter 方法,增加参数 isNotCommandParameter 可设置是否使用参数化;
- 调整 FreeSqlBuilder,准备移除 UseEntityPropertyNameConvert/UseSyncStructureToLower/UseSyncStructureToUpper 方法;#260;
- 移除 In多列表达式函数解析 #243;
- 优化 IncludeMany 扩展方法对 T1 不自动迁移;
- 优化 BulkCopy 对可空类型的属性处理; #227
- 优化 IAdo.Query 方法,当传入带主键特性的实体时,防止主键列为 null 时导致整行记录也为 null;
- 优化 TableInfo 元数据对 interface 实现类 IsVirtual 重写的判断(增加 IsFinal == false);
- 优化 Navigate 属性未设置 set 时的友好错误提示;
- 优化 延时属性重写类对 protected set 的支持;
- 优化 ConnectionPool 提升被动连接断开的体验(会卡的可以升级);
- 优化 集合导航属性表达式中忘记使用 AsSelect() 的友好错误提示;
- 增加 FreeSqlBuilder UseNameConvert 方法,类名、属性名都生效;
- 增加 CodeFirst 实体类注释 -> 表备注,之前只能属性注释 -> 字段备注;
- 增加 FreeSql.Generator Sqlite 数据库生成实体类;
- 增加 Sqlite DbFirst 实现;
- 增加 Oracle clob/nclob 大文本类型读写支持;#259;
- 增加 ISelect.ToTreeList 扩展方法查询数据,加工为树型 List;(注意:实体需要配置父子导航属性)
- 增加 ISelect`1 ToDictionary 方法查询返回字典;
- 增加 Pgsql JToken/JObject/JArray 索引访问的表达式解析;
- 增加 object.Equals 表达式解析;
- 增加 ISelect`1 AsQueryable 方法,实现将 ISelect 转换为 IQueryable 类型;
- 增加 ISelect.RawJoin 方法以便实现 Outer Apply 查询;#200;
- 增加 IAdo.ConnectionString 属性返回 UseConnectionString 传入的值;
- 完善 表达式拼接方法,从 T1-T5;#256;
- 修复 因兼容 #184 导致 MySql Enum 表达式解析为 int 的 bug;
- 修复 FreeSql.Provider.MySqlConnector Enum 自定义元素值,导致值计算错误的 bug;
- 修复 SqlServer charindex 表达式函数参数位置的错误;
- 修复 MySql locate 表达式函数参数位置的错误;
- 修复 UseGenerateCommandParameterWithLambda(true) 时子语句的参数没整合到主语句;#231;
- 修复 本地区域化后 ToSql 产生的错误,比如数字可能生成 SQL 为:100,000;
- 修复 StringLength/MaxLength 对 Oracle varchar2 类型无效的 bug;
- 修复 CodeFirst IsNullable 迁移脚本重复 NOT NULL 语法错误;
- 修复 DbFirst Oracle/Dameng 序列值使用复杂的问题,结合 [Column(InsertValueSql = "xxx.nextval")];
v1.2.1
- 修复 LazyLoading 依赖项目 CSScript.Core 升级的 bug;
- 修复 ToList 父子导航可能匹配不正确的 bug;
- 修复 读写分离创建 IFreeSql 时如果从库不可用导致 iis 退出的 bug;
- 修复 DbContext/Repository SaveMany 一对多保存时删除条件 bug;
- 调整 Aop 改为 event 事件;
- 调整 Ado.AopCommandExecuting/AopCommandExecuted 到 Aop.CommandBefore/After;
- 调整 DbContext/Repository EnableAddOrUpdateNavigateList 默认关闭;
- 增加 Aop.TraceBefore/After 事件;
- 增加 BaseEntity SaveMany 方法;
v1.2.0
v1.1.0
- 增加 FreeSql.Provider.MySqlConnector 扩展方法 ExecuteMySqlBulkCopy;
- 增加 FreeSql.All 全家桶包,懒人专用;
- 支持 Sqlite :memory: 模式; #191
- 完善 [Column(ServerTime = Utc)] 特性,对 Update 时也能生效;
- 完善 [Column(MapType = typeof(byte[]))] 对 Guid/string 的映射支持;#178
- 完善 MapType byte[] 对 Contains/Parse 表达式解析的处理;
- 优化 参考 Chloe 表达式针对变量的解析,提升了一倍性能;
- 优化 IsVersion 字段更新 version=ifnull(version,0)+1,防止字段为 null 一直报错;
- 优化 IdleTimeout 默认值为 20 秒; #194
- 修复 BaseRepository.UnitOfWork 延迟设置(即事务开启之后再设置)无效的 bug;
- 修复 FreeSql.Generator 外键导航属性大写小 bug;#177
- 修复 DbConnectionPool.Return 在 Sqlite 下的 bug;#179
- 修复 DbFirst mysql/pgsql/sqlserver 获取主键失败的 bug; 0.10.7 发布后的 bug #182
- 修复 GroupBy 类型转换错误;#186
- 修复 .ToList(a => new DTO(a.id)) 报 未将对象引用设置到对象的实例 问题; #187
- 修复 update语句,二元运算解析出错; #184
- 修复 xamarin ios 真机无法使用 Sqlite 的问题; #183
- 修复 父子关系导航属性 Dto 中直接使用 a.Parent 映射错误的 bug;
- 解决 表名名称包含点,无法进行 CRUD 的问题,由于测试的复杂性,此类情况仅支持 MySql/Sqlite CodeFirst 自动迁移;
注意:尽量不要使用带点的表名,只有 MySql/Sqlite 对此类表名支持 CodeFirst。但是它不影响 CRUD 功能,使用 [Table(Name = "`sys.config`")] 解决
v1.0.1
-
增加 EfCoreFluentApi 扩展包,接近 efcore fluentApi 的使用习惯;
-
增加 ColumnAttribute 属性 InsertValueSql,插入数据的时候指定用 sql 值;
-
增加 ISelect`1.WithSql("select * from user ...") 功能;
-
完善 PgSql OnConflictDoUpdate 功能增加 DO NOTHING 操作;#174
-
调整 最大连接池为 +5(属于内部设置);
-
修复 NoneParameter 无参对 byte[] 二进制拼接的 bug;#170
-
修复 IAdo.Query<object> 字段名重复的 bug;#162
v1.0.0
- 增加 FreeSql.Provider.MsAccess 支持 Access 数据库操作,已通过 2003/2007 版本测试;
- 增加 IInsert.ExecuteSqlBulkCopy 扩展方法执行 SqlBulkCopy 批量插入,在 FreeSql.Provider.SqlServer 可用;
- 增加 IInsert.ExecutePgCopy 扩展方法执行 PostgreSQL Copy 批量导入,在 FreeSql.Provider.PostgreSQL 可用;
- 增加 IInsert.ToDataTable 方法,为 BulkCopy 操作提供数据,该方法处理了(表名、字段名、类型)映射和忽略列;
- 增加 ISelect.ToSql 字段别名设置,默认为 AsIndex,可改为 AsProperty;#158
- 增加 ISelectGrouping 分组查询总量的方法 .Count();
- 增加 IInsert/IUpdate BatchOptions 方法指定批量插入的设置;
- 增加 FreeSql.Generator -Filter 设置选项,可阻止存储过程+视图的生成;
- 增加 FreeSql.Generator 在目标目录产生 __razor.cshtml.txt 文件,以便自定义修改模板生成;
- 完善 Select`2-10 多表查询对象,增加 First(select)/ToOne(select)/First<Dto> 方法;
- 优化 实体基类的属性位置,优先排在最前面;
- 优化 实体属性,支持 protected set 属性;
- 优化 ISelect.Count() 之前使用了 OrderBy 会产生的 SQL 语法问题;
- 优化 AsTable 分表查询 Any/Min/Max/Avg/Sum/Count 的处理;#158
- 优化 BaseEntity Select 查询数据时自动 Attach;
- 优化 没有主键的实体,约定 id 命名的属性上若设置了 IsPrimary = false,则其不属于约定主键;
- 兼容 Vb.Net 无法使用 IncludeMany 的问题;
- 兼容 Vb.Net 无法使用 int? 类型 = 等号表达式解析;
- 修复 Ado.Query 查询字段重复时报错;#162
- 修复 LazyLoading 在 Net4 环境下的问题;
- 调整 Avg 方法返回值为 double,Sum 方法返回值为 decimal;
- 整理 实体类 Ctor 有构造函数的映射处理;wiki
v0.12.21(达梦数据库)
- 增加 达梦数据库 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 依赖;