FreeSql

🦄 .NET aot orm, C# orm, VB.NET orm, Mysql orm, Postgresql orm, SqlServer orm, Oracle orm, Sqlite orm, Firebird orm, 达梦 orm, 人大金仓 orm, 神通 orm, 翰高 orm, 南大通用 orm, 虚谷 orm, 国产 orm, Clickhouse orm, QuestDB orm, MsAccess orm.

MIT License

Stars
3.9K
Committers
39

Bot releases are hidden (Show)

FreeSql - v1.3.4

Published by 2881099 over 4 years ago

  • 调整 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")];
FreeSql - v1.2.1

Published by 2881099 over 4 years ago

  • 修复 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 方法;
FreeSql - v1.2.0

Published by 2881099 over 4 years ago

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

Published by 2881099 over 4 years ago

  • 增加 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`")] 解决

FreeSql - v1.0.1

Published by 2881099 almost 5 years ago

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

FreeSql - v1.0.0

Published by 2881099 almost 5 years ago

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

Published by 2881099 almost 5 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 依赖;
FreeSql - v0.11.23

Published by 2881099 almost 5 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 功能;
FreeSql - v0.10.15 (.Net Framework 4.0)

Published by 2881099 almost 5 years ago

  • 增加 .Net Framework 4.0 的支持,出于环境考虑 .Net Framework 4.0 不支持异步方法;
  • 增加 IndexAttribute 特性,自动迁移索引,以及对应的 FluentApi 方法;
  • 增加 NavigateAttribute 特性对应的 Fluent 功能;#96
  • 增加 ColumnAttribute 可插入(CanInsert)、可更新(CanUpdate);#99
  • 增加 IFreeSql.Insert<T>(List source) 方法;
  • 增加 Aop.ConfigEntity 属性 ModifyIndexResult 现实 IndexAttribute 的设置;
  • 增加 PostgreSQL 的 Odbc 访问提供,相比 FreeSql.Provider.PostgreSQL 支持的类型更少;
  • 增加 通用的 Odbc 访问提供,不能迁移实体到数据库,不能 Skip 这样来分页,理论上能 crud 所有 odbc 数据库;
  • 增加 DbContext/Repository ManyToMany联级保存功能(之前已支持OneToMany);

文档: https://github.com/2881099/FreeSql/wiki/%e8%81%94%e7%ba%a7%e4%bf%9d%e5%ad%98

  • 增加 FreeSql.DbContext 实体对象的变化事件;

文档: https://github.com/2881099/FreeSql/wiki/DbContext#%E5%AE%9E%E4%BD%93%E5%8F%98%E5%8C%96%E4%BA%8B%E4%BB%B6

  • 增加 List<T1> 扩展方法 IncludeMany,实现从已知的内存 List 数据,进行和 ISelect.IncludeMany 相同功能的贪婪加载;

示例:new List<Song>(new[] { song1, song2, song3 }).IncludeMany(g.sqlite, a => a.Tags);
文档:https://github.com/2881099/FreeSql/wiki/%e8%b4%aa%e5%a9%aa%e5%8a%a0%e8%bd%bd#%E5%AF%BC%E8%88%AA%E5%B1%9E%E6%80%A7-onetomanymanytomany


  • 优化 FreeSqlBuilder 处理 MaxLength 特性的容器处理;
  • 优化 枚举属性的默认值容错,枚举下标不存在 0 的时候,mysql 迁移结构默认值报错;
  • 优化 ORACLE Command 绑定变量 BindByName = true;#107
  • 优化 IUpdate.IgnoreColumns/UpdateColumns 可对属性名,或字段名做设置;#95
  • 优化 忽略 List<T> 作为 Curd 类型操作;
  • 补充 Aop.CurdBefore 事件参数 Table 实体类型的元数据;

  • 修复 Pgsql string[] 属性表达式 Contains 缺少类型转换的 SQL 语法错误;
  • 修复 postgresql 12 移除 pg_attrdef.adsrc 列,导致 CodeFirst 方法失败的 bug;
  • 修复 PostgreSQL DbFirst 获取字段类型的时候,没有拼得字符串的长度(如 varchar(255));
  • 修复 DbFirst 当表数量过大时(如 oracle 表数量大于 1000),可能报错的 bug;
  • 修复 FreeSql.DbContext/FreeSql.Repository 当主键为 Guid? 可空类型时,发生参数错误;

System.ArgumentException:“Expression of type 'System.Guid' cannot be used for assignment to type 'System.Nullable`1[System.Guid]'”


  • 移除 ColumnAttribute.Unique 属性设置,改为 IndexAttribute 特性设置唯一键;
FreeSql - v0.9.18(ODBC)

Published by 2881099 about 5 years ago

  • 增加 FreeSql.Provider.Odbc,实现 Oracle/SqlServer/MySql/PostgreSQL 的 Odbc 专用访问提供;
  • 增加 通用的 Odbc 访问提供,理论上能 crud 所有 odbc 数据库;
  • 增加 FreeSql.Extensions.JsonMap 扩展包,实现快速将对象映射为json字符串的方法;
fsql.UseJsonMap(); //开启功能

class TestConfig
{
    public int clicks { get; set; }
    public string title { get; set; }
}
[Table(Name = "sysconfig")]
public class S_SysConfig<T>
{
    [Column(IsPrimary = true)]
    public string Name { get; set; }

    [JsonMap]
    public T Config { get; set; }
}
  • 增加 MaxLength 特性的解析,实体字符串长度设置;
class Topic {
    [MaxLength(128)]
    public string Title { get; set; }
}
  • 增加 BaseRepository.AttachOnlyPrimary 方法,只附加实体的主键值;

在更新前使用可实现不查询数据库再更新、也可以实现更新时不更新值为 null 的字段

class T {
    public int id { get; set; }
    public string name { get; set; }
    public string other { get; set; }
}
var item = new T { id = 1, name = "xx" };
fsql.GetRepository<T>().AttachOnlyPrimary(item).Update(item); //只更新 name
  • 增加 FreeSqlBuilder.UseConnectionString 参数 providerType,可解决因包版本冲突时,可能无法反射获得 FreeSql.Provider 对应的类型,通常这个参数不需要设置;

  • 增加 创建表时指定字段位置,如:[Column(Position = 1],可为负数即反方向位置;

  • 增加 ISelect.ToChunk 实现分块查询数据,减少数据过大时内存占用;

  • 增加 AsTable 多次,可查询分表后的多个子表记录,以 UNION ALL 形式执行;

  • 增加 ISelect.First() 方法;

  • 优化 MaxLength 特性,当指定为 -1 时 DbType 会分别映射类型 text/nvarchar(max)/nvarchar2(4000);

  • 优化 表达式解析未实现的错误提醒,如 $"";

  • 优化 AsTable UseSyncStructureToLower/ToUpper 设置,兼容 AsTable((t,o) => "(select * from tb)");

  • 优化 ISelect`1.Include之后ToList参数includeNestedMembers默认为true;

  • 优化 MapType DateTime/DateTimeOffset 类型转换互通;


  • 移除 FreeSql.Repository 扩展方法 FromRepository;

  • 修复 批量更新 bug,当某行某字段值为null,其他行的该字段也更新成了null;【重大 bug】
  • 修复 Lambda 表达式中 DateTime.Now.ToString("yyyyMMdd") 不能直接执行的 bug;
  • 修复 属性无set自动忽略的bug;
  • 修复 导航属性配置,循环关系的情况下可能导致的 bug;
  • 修复 导航属性配置和Aop冲突的 bug;
  • 修复 Aop.AuditValue 与 FreeSql.Repository 主键状态管理的冲突;
  • 修复 MapType 表达式解析时的层级 bug,可能出现 ExpressionTree 类型错误;
FreeSql - v0.8.11

Published by 2881099 about 5 years ago

  • 增加 Aop.AuditValue 事件,在插入/更新数据时审计属性值,wiki
  • 优化 导航属性的关系,友好支持 int/int? 映射;
  • 优化 DbContext/Repository 局部调整;
  • 优化 DbContext/Repository 局部调整;
  • 补充 使用 IsIgnore 忽略后,表达式再使用时的友好错误提示;

  • 修复 Pgsql 批量更新使用 NoneParameter 后日期类型的语法 bug;
  • 修复 Oracle DbFirst 大小写问题没正确获取列对应 CsType 值的 bug;
  • 修复 IncludeMany 变异 Where 指定的属性类型不一致的 bug;(如 int 和 int?)
  • 修复 导航关系多属性时的错序 bug;
  • 修复 延时属性的类,没有设置Namespace时的 bug;
  • 修复 DbContext.Save 只查询不更新的bug;
FreeSql - v0.8.5

Published by 2881099 about 5 years ago

  • 增加 FreeSql.Provider.Oracle 下的 OraclePrimaryKeyName 特性,手工设置主键名防止默认名过长问题;

  • 增加 IFreeSql.Select`T1...T10 的多表查询扩展方法;

  • 增加 表达式函数 string.IsNullOrWhiteSpace 解析;

  • 增加 UnitOfWork.Current 静态属性,AsyncLocal 实现 [NETStandard 2.0];

  • 增加 ISelect.WhereCascade 实现多表查询时,向每个表中附加条件; wiki

  • 增加 表达式对基类转换的解析,如:Where(a => (a as BaseEntity).IsDeleted == true);

  • 增加 Examples 项目 base_entity,利用 BaseEntity 实现简洁的数据库操作;

  • 增加 子查询判断,如果使用了相同 ISelect 会死循环;

  • 增加 连接字符串错误时的友好提示;

  • 增加 子查询函数 First、Count、Min、Max、Sum、Avg 的支持 #wiki

  • 优化 内部实体管理的默认值,防止导航属性使用抽象类/接口时出现错误;

  • 优化 表达式中不能使用 c# 函数的问题,

如:where(a => HttpContext.Session.GetString("UserID") == a.UserId)

  • 优化 IUpdate.Set 表达式传入匿名类更新多个字段;
  • 优化 IInsert.InsertIdentity 可插入自增属性;
  • 优化 ExpressionTree 类型转换的友好错误提示;
  • 补充 ISelect`T1...T10 LeftJoin/InnerJoin/RightJoin 多参数方法;
  • 补充 Navigate(ManyToMany = typeof(中间表)) 多对多自定义配置;
  • 补充 Oracle DbFirst raw 等类型映射处理,其他未处理的类型将映射为 string;

  • 修复 ISelect.WhereCascade 当内部使用 (a as BaseEntity).TenantId 时报错的 bug;
  • 修复 ISelect Sum/First 子查询时,若子查询实体类与主查询一样时,导致的 bug;
  • 修复 IUpdate.Set 表达式传入匿名类更新多个字段,后表达式未加[]或""的 bug;
  • 修复 Aop.ConfigEntityProperty 操作导航属性后,执行 insert 语句认为它也是字段的 bug;
  • 修复 查询重复数据时使用 IncludeMany 出现字典重复添加的 bug;(如一对多使用LeftJoin查询,主实体查询出了重复的数据)
  • 修复 Oracle 表达式 DateTime.Subtract(DateTime) 解析 bug;
  • 修复 Oracle CodeFirst 使用 OldName 迁移自增字段时,未删除旧的触发器和序列的 bug;
  • 修复 CodeFirst 迁移代码注释到数据库,继承的基类未生效的 bug;
  • 修复 SqlServer IUpdate.ExecuteUpdated 拼接SQL bug;
  • 修复 .From 多表查询别名的匹配 bug;
  • 修复 SqlServer 未处理字符串前面加N 的 bug;
  • 修复 LambadaExpressionExtensions 扩展方法 And/Or 当存在二级 lambada 时替换错误的 bug;

如:where.Add(a => a.Tags.Any(b => ...)),b 替换错误

FreeSql - v0.7.6

Published by 2881099 over 5 years ago

v0.7.6

  • 增加 IGroupSelect ToSql(string) 重载方法;
  • 优化 表达式 true && ... 解析的处理;
  • 优化 Navigate 指定联合键关系时,对属性顺序的要求,当类型不一样、名称一样时无须指明属性的顺序,如:[Navigate("MemberId, ShopId")];

  • 修复 Insert/Update 大批量操作分批执行时,如果外部使用了 Ado.Transaction,没有使用线程事务对象,而是创建了新事务的 bug;
  • 修复 Insert ClearData 重复利用的 bug(使用 IgnoreColumns 进行大批量插入时会发生);
  • 修复 ISelect.From<T2, T2> 当传入相同的两个实体类型,可能导致内部 Join 无法匹配的 bug;
  • 修复 根据代码注释,迁移到数据库备注,当实体类属于 .exe 程序集时的 bug:System.Xml.XmlException:“根级别上的数据无效。 第 1 行,位置 1。”
FreeSql - v0.7.1

Published by 2881099 over 5 years ago

  • 增加 表达式 .HasValue 和 !.HasValue 的解析支持;
  • 增加 表达式 DateTime - DateTime 和 DateTime - TimeSpan 的解析支持;
  • 增加 LambdaExpression 扩展方法 And/Or/Not 快速拼接表达式;
  • 增加 CodeFirst 根据代码注释,迁移到数据库备注(需要实体类所在项目开启xml生成功能);
  • 合并 FreeSql.DbContext 项目至 FreeSql;
  • 优化 IUpdate.Set 支持 Set(a => new { Clicks = a.Clicks + 1, Time = DateTime.Now }) 指定多个字段更新的用法;

  • 修复 .From.GroupBy Item2 以上元组参数未查找到的 bug #63;
  • 修复 IUpdate.Set 表达式解析的 bug;
FreeSql - v0.6.10

Published by 2881099 over 5 years ago

v0.6.10

  • 增加 TableAttribute 特性属性 DisableSyncStructure,当实体对应的是视图时,可使用本功能禁用迁移;
  • 增加 FreeSqlBuilder UseEntityPropertyNameConvert() 全局转换实体属性名方法 #60

v0.6.9

  • 修复 批量插入/更新大量数据时,未使用NoneParameter,会导致部分未执行的bug;

v0.6.8

  • 处理 非正常 Provider GC 可能为 null 的错误;
  • 修复 Aop.ParseExpression 使用 FreeParse 方法死循环的 bug;
  • 增加 ISelect.OrderBy 重载,与 WhereIf 相同行为;

v0.6.6

  • 适配 FreeSql.Provider.MySqlConnector,和它对应的266个单元测试;

v0.6.5

  • 增加 NavigateAttribute 配置导航关系;
  • 修复 LinqToSql 方法,开启自动迁移时,迁移了无关类的 bug;
  • 修复 Oracle DbFirst date(7) 类型未处理的 bug;
  • 修复 AsSelect().Any() 未给其他条件时,产生 null bug;
  • 修复 子查询使用非表达式方法时,参数无效的 bug;
  • 增加 FreeSql.Extensions.LazyLoading 对 .net 4.5 的支持;
  • 优化 MySql CodeFirst 增加 DateTime 迁移后,默认值为 0000-00-00 导致读取失败的 bug;
  • 优化 LazyLoading 友好错误提示;

v0.6.3

  • 补充 当初始化 ConnectionString 参数为空时,给出友好错误提示;
  • 修复 IUpdate.IngoreColumns/UpdateColumns 若实体指定别名后,可能无效的bug;

v0.6.2

  • 增加 FreeSql.Provider.MySqlConnector 实现包;
  • 修复 mysql CodeFirst enum/set 小写时,对 MySqlConnector 不友好的 bug;

v0.6.1(拆解 FreeSql)

  • 各数据库单独包、延时加载包;
  • FreeSql.Extensions.LazyLoading
  • FreeSql.Provider.MySql
  • FreeSql.Provider.PostgreSQL
  • FreeSql.Provider.SqlServer
  • FreeSql.Provider.Sqlite
  • FreeSql.Provider.Oracle
  • 移除 IFreeSql.Cache,以及 ISelect.Caching 方法;
  • 移除 IFreeSql.Log,包括内部原有的日志输出,改为 Trace.WriteLine;
  • IAdo.Query<dynamic> 读取返回变为 List<Dictionary<string, object>>
  • 定义 IFreeSql 和以前一样,移除了 UseCache、UseLogger 方法;
FreeSql - v0.5.23

Published by 2881099 over 5 years ago

v0.5.23

  • 补充 IUpdate.Set(a => a.Click == 10),简化 Set 更新单个字段表达式;
  • 优化 延时导航属性的错误提醒,当无法匹配错误,转到重写类 get 时抛出(实现延时导航属性,与普通导航一起使用);
  • 优化 ICodeFirst.SyncStructure 错误提示,当使用不可迁移实体时;
  • 优化 实体数据属性 DbDefaultValue 处理;
  • 修复 Expression 表达式解析 Convert 的判断 bug;

v0.5.21

  • 修复 IncludeMany ManyToMany,若中间表未使用 延时加载 属性功能时,出现的 bug;
  • 增加 IncludeMany Take(5) 功能,实现每个子集合只取5条记录;
FreeSql - v0.5.18

Published by 2881099 over 5 years ago

v0.5.18

  • 增加 ISelect.Include 贪婪加载第一版,已通过集合的导航数据加载,包括 OneToMany/ManyToMany;
  • 修改 IncludeMany ManyToMany ET 缓存的 bug;
  • 完善 IncludeMany 联合键处理;
  • 完善 Include/IncludeMany 单元测试;
  • 修复 Include 延时加载 ManyToOne/OneToOne,当值为 null 时,仍然会查询一次数据;
  • 修改 Query/ToList 混合使用时,可能导致的 ET 缓存 bug;
  • 修改 Query 查询的实体设置了 IsIgnore 时,可能出现 ET 读取位置偏移 bug;
  • 增加 变异的 IncludeMany,即使不是导航属性,也可以贪婪加载,Wiki

v0.5.12

  • 优化 连接预热策略:min pool size 不设置或 <= 0,则默认预热 5个;也可以设置 1;
  • 取消 MySql CodeFirst 对表字符集的设置;
  • 增加 ToList() 方法,作用与 ToList(a => new Dto()) 相同;
FreeSql - v0.5.11

Published by 2881099 over 5 years ago

v0.5.11

  • 修复 复杂的表达式解析 OR 的括号 bug;
  • 增加 linq to sql 的查询语法,以及单元测试,wiki
  • 补充 IFreeSql 增加与实现 IDisposable 接口(依然要保持单例的使用习惯);
  • 增加 CurdBefore、CurdAfter AOP 事件,可监控执行增删查改;
  • 增加 SyncStructureBefore、SyncStructureAfter AOP 事件,可监控CodeFirst迁移;
FreeSql - v0.5.7

Published by 2881099 over 5 years ago

v0.5.7

  • 补充 nuget 包增加 xmlDoc 编译,原来使用者之前一直没有注释;
  • 调整 Column.Unique 定义规则,解决同一属性不可配置多次的问题;
  • 优化 兼容不同数据库 bool 的表达式解析,如:Where(a => a.Bool)、Where(a => !a.Bool);
FreeSql - v0.5.5

Published by 2881099 over 5 years ago

v0.5.5

  • 增加 Column.MapType 类型映射,可将 enum 映射为 int/string 等,文档
  • 增加 Column.Unique 唯一键,多个属性指定相同的标识,代表联合键,#42
  • 增加 Expression string.Concat,#39
  • 补充 Expression IEnumerable.Contains 的支持,之前只能数组或IList
  • 补充 IDbFirst GetTableByDatabase 返回 uk/fk/index 名称,以便迁移;
  • 补充 MapType/Unique 单元测试;
  • 优化 PostgreSQL jsonb 类型使用习惯;