Skip to content

Releases: dotnetcore/FreeSql

v1.4.0

26 Apr 06:24

Choose a tag to compare

  • 增加 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.4.0 版本调整说明(包含v1.3.6+)

v1.3.6

12 Apr 11:30

Choose a tag to compare

  • 优化 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

07 Apr 10:11

Choose a tag to compare

  • 修复 IncludeMany 第3层无法加载的问题,IncludeMany(a => a.Parent.Parent.Childs);
  • 修复 PostgreSQL CodeFirst/DbFirst 系统表的版本兼容问题;
  • 增加 EfCoreFluentApi HasData 设定 CodeFirst 种子数据;
  • 增加 DbContextOptions.NoneParameter 设置是否使用参数化执行 Insert/Update;

v1.3.4

01 Apr 06:18

Choose a tag to compare

  • 调整 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

06 Mar 09:15

Choose a tag to compare

  • 修复 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

28 Feb 10:50

Choose a tag to compare

  • 增加 nuget 包强签名发布;#201
  • 增加 IUpdate.SetDto 根据 dto 更新的方法;#218
  • 完善 IUpdate.SetSource 组合主键的数据更新单元测试;
  • 修复 ToList(a => new Dto {}) 这种情况按字段名匹配r问题,应该按属性名;#208
  • 修复 Oracle 导航属性 表别名过长的问题;
  • 修复 DbSet.Where 表达式解析报错的问题;#216
  • 修复 DbContext/Repository Update 不更新 DbUpdateValue 的问题;#219
  • 修复 EfFluentApi 一个参数类型问题;

v1.1.0

31 Jan 04:15

Choose a tag to compare

  • 增加 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

03 Jan 05:07

Choose a tag to compare

  • 增加 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

25 Dec 12:53

Choose a tag to compare

  • 增加 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(达梦数据库)

16 Dec 18:06

Choose a tag to compare

  • 增加 达梦数据库 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 依赖;