diff --git a/FreeSql/FreeSql.xml b/FreeSql/FreeSql.xml index 0c309880..983c8c85 100644 --- a/FreeSql/FreeSql.xml +++ b/FreeSql/FreeSql.xml @@ -2286,6 +2286,16 @@ + + + 按列排序,OrderByIf(true, a => a.Time) + + + true 时生效 + + true: DESC, false: ASC + + 按列倒向排序,OrderByDescending(a => a.Time) @@ -3329,7 +3339,182 @@ - + + 获取 Index 对应的值,也可以设置拦截的新值 + + + + + 标识符,可将 CommandBefore 与 CommandAfter 进行匹配 + + + + + 发生的错误 + + + + + 执行SQL命令,返回的结果 + + + + + 耗时(单位:Ticks) + + + + + 耗时(单位:毫秒) + + + + + 标识符,可将 TraceBeforeEventArgs 与 TraceAfterEventArgs 进行匹配 + + + + + 备注 + + + + + 发生的错误 + + + + + 耗时(单位:Ticks) + + + + + 耗时(单位:毫秒) + + + + + 【开发环境必备】自动同步实体结构到数据库,程序运行中检查实体表是否存在,然后创建或修改 + + + + + 转小写同步结构,适用 PostgreSQL + + + + + 转大写同步结构,适用 Oracle/达梦/人大金仓 + + + + + 将数据库的主键、自增、索引设置导入,适用 DbFirst 模式,无须在实体类型上设置 [Column(IsPrimary)] 或者 ConfigEntity。此功能目前可用于 mysql/sqlserver/postgresql/oracle。 + 本功能会影响 IFreeSql 首次访问的速度。 + 若使用 CodeFirst 创建索引后,又直接在数据库上建了索引,若无本功能下一次 CodeFirst 迁移时数据库上创建的索引将被删除 + + + + + 不使用命令参数化执行,针对 Insert/Update + + + + + 是否生成命令参数化执行,针对 lambda 表达式解析 + 注意:常量不会参数化,变量才会做参数化 + var id = 100; + fsql.Select<T>().Where(a => a.id == id) 会参数化 + fsql.Select<T>().Where(a => a.id == 100) 不会参数化 + + + + + 延时加载导航属性对象,导航属性需要声明 virtual + + + + + 将实体类型与数据库对比,返回DDL语句 + + + + + + + 将实体类型集合与数据库对比,返回DDL语句 + + 实体类型 + + + + + 将实体类型与数据库对比,返回DDL语句(指定表名) + + 实体类型 + 指定表名对比 + + + + + 同步实体类型到数据库 + 注意:生产环境中谨慎使用 + + + + + + 同步实体类型集合到数据库 + 注意:生产环境中谨慎使用 + + + + + + 同步实体类型到数据库(指定表名) + 注意:生产环境中谨慎使用 + + 实体类型 + 指定表名对比 + 强制同步结构,无视缓存每次都同步 + + + + 根据 System.Type 获取数据库信息 + + + + + + + FreeSql FluentApi 配置实体,方法名与特性相同 + + + + + + + + FreeSql FluentApi 配置实体,方法名与特性相同 + + + + + + + + 获取 FreeSql FluentApi 配置实体的元数据 + + + 未使用ConfigEntity配置时,返回null + + + + 获取实体类核心配置 + + + @@ -3521,194 +3706,6 @@ - - - 设置 obj.CsName 属性值 - - - - 获取指定数据库的表信息,包括表、列详情、主键、唯一键、索引、外键、备注 - - - - - - - 获取指定单表信息,包括列详情、主键、唯一键、索引、备注 - - 表名,如:dbo.table1 - 是否忽略大小写 - - - - - 判断表是否存在 - - 表名,如:dbo.table1 - 是否忽略大小写 - - - - - 获取数据库枚举类型int值 - - - - - - - 获取c#转换,(int)、(long) - - - - - - - 获取c#值 - - - - - - - 获取c#类型,int、long - - - - - - - 获取c#类型对象 - - - - - - - 获取ado.net读取方法, GetBoolean、GetInt64 - - - - - - - 序列化 - - - - - - - 反序列化 - - - - - - - 获取数据库枚举类型,适用 PostgreSQL - - - - - - - 如果实体类有自增属性,分成两个 List,有值的Item1 merge,无值的Item2 insert - - - - - - - AsType, Ctor, ClearData 三处地方需要重新加载 - - - - - AsType, Ctor, ClearData 三处地方需要重新加载 - - - - - 动态读取 DescriptionAttribute 注释文本 - - - - - - - 通过属性的注释文本,通过 xml 读取 - - - Dict:key=属性名,value=注释 - - - - 更新实体的元数据 - - - - - 执行更新的 SQL - - - - - 执行更新命令的参数 - - - - - 执行更新命令影响的行 - - - - - 更新的实体数量 - - - - - 更新的实体 - - - - - 创建一个过滤器 - - - 名字 - 表达式 - - - - - 当前操作的数据 - - - - - 当前批次 - - - - - 总批次数量 - - - - - 获取 obj.CsName 属性值 MapType 之后的数据库值 - - - - - - - 获取 obj.CsName 属性原始值(不经过 MapType) - - - 设置 obj.CsName 属性值 diff --git a/FreeSql/Interface/Curd/ISelect/ISelect1.cs b/FreeSql/Interface/Curd/ISelect/ISelect1.cs index 08ccda4b..96daf821 100644 --- a/FreeSql/Interface/Curd/ISelect/ISelect1.cs +++ b/FreeSql/Interface/Curd/ISelect/ISelect1.cs @@ -346,6 +346,15 @@ namespace FreeSql /// ISelect OrderBy(bool condition, Expression> column); /// + /// 按列排序,OrderByIf(true, a => a.Time) + /// + /// + /// true 时生效 + /// + /// true: DESC, false: ASC + /// + ISelect OrderByIf(bool condition, Expression> column, bool descending = false); + /// /// 按列倒向排序,OrderByDescending(a => a.Time) /// /// 列 diff --git a/FreeSql/Internal/CommonProvider/SelectProvider/Select1Provider.cs b/FreeSql/Internal/CommonProvider/SelectProvider/Select1Provider.cs index c8b7474c..dc9b92f5 100644 --- a/FreeSql/Internal/CommonProvider/SelectProvider/Select1Provider.cs +++ b/FreeSql/Internal/CommonProvider/SelectProvider/Select1Provider.cs @@ -160,6 +160,8 @@ namespace FreeSql.Internal.CommonProvider _tables[0].Parameter = column.Parameters[0]; return this.InternalOrderByDescending(column.Body); } + public ISelect OrderByIf(bool condition, Expression> column, bool descending = false) => + descending ? this.OrderByDescending(condition, column) : this.OrderBy(condition, column); public decimal Sum(Expression> column) {