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)
{