9.14 函数操作
温馨提示
推荐使用 《9.17 Sql 高级代理》代替本章节功能。Sql 高级代理
能够提供更容易且更易维护的方式。
#
9.14.1 数据库函数引用百度百科:
数据库函数是指当需要分析数据清单中的数值是否符合特定条件时,使用数据库工作表函数。
简单来说,数据库函数就是用于子计算的函数。其计算的结果可以用于构建 sql
语句。
#
9.14.1.1 支持标量函数的数据库SqlServer | Sqlite | Cosmos | InMemoryDatabase | MySql | PostgreSQL | Oracle | Firebird | Dm |
---|---|---|---|---|---|---|---|---|
✔ | ✔ | ✔ | ✔ | ✔ |
#
9.14.1.2 支持表值函数的数据库SqlServer | Sqlite | Cosmos | InMemoryDatabase | MySql | PostgreSQL | Oracle | Firebird | Dm |
---|---|---|---|---|---|---|---|---|
✔ | ✔ | ✔ | ✔ |
#
9.14.2 数据库函数类型在关系型数据库中,数据库函数有这两种类型:
标量函数
:只能返回单个值表值函数
:只能返回一个结果集
#
9.14.3 函数的使用object
#
9.14.3.1 标量函数返回 关于异步
Furion
框架每一个数据库操作都支持异步方式,由于篇幅有限,就不列举异步方式了。
T
#
9.14.3.2 标量函数返回 关于异步
Furion
框架每一个数据库操作都支持异步方式,由于篇幅有限,就不列举异步方式了。
DataTable
#
9.14.3.3 表值函数返回 关于异步
Furion
框架每一个数据库操作都支持异步方式,由于篇幅有限,就不列举异步方式了。
List<T>
#
9.14.3.4 表值函数返回 关于异步
Furion
框架每一个数据库操作都支持异步方式,由于篇幅有限,就不列举异步方式了。
Linq
中使用 标量函数
#
9.14.4 在 Furion
框架提供非常灵活的在 Linq
中使用标量函数的方法。如果像使用这样的方式,需要满足以下两个条件:
- 标量函数必须定义在公开静态类中,且自己也是公开静态方法
- 该公开静态方法必须贴有
[QueryableFunction]
特性
示例如下:
#
9.14.4.1 创建标量函数#
9.14.4.2 创建静态类和静态方法创建静态类,如 QueryFunctions
,将该 标量函数
放在静态类中:
Linq
中使用#
9.14.4.3 在 
Linq
中使用 表值函数
#
9.14.5 在 EF Core 5.0
版本支持在 Linq
中操作 表值函数
,操作有点类似 视图操作
示例如下:
#
9.14.5.1 创建表值函数#
9.14.5.2 创建表值函数模型#
9.14.5.3 表值函数配置在 DbContext
类中定义方法:
Linq
中使用#
9.14.5.4 在 最终生成 Sql
EF Core
内置函数#
9.14.6 在 EF Core
为我们提供了很多常用的内置函数,可以在 Lambda
条件中使用,主要是通过 EF.Functions 调用,如:
这个语句使用了 EF.Functions.DateDiffHour 最终生成的 Sql 如下:
EF Core
内置函数就不一一列出了,可以通过 EF.Functions
查看更多,如果不能满足自己的需求,那么可以自定义 Linq
标量函数
#
9.14.7 反馈与建议与我们交流
给 Furion 提 Issue。