有什么不同 ?是否都用于在获取数据并将它们存储在内存中之前在 sql 端执行功能?
PS:
两者都用于linq to entites。
正如文档所述EntityFunctions
提供在 LINQ to Entities 查询中公开概念模型规范函数的公共语言运行时 (CLR) 方法。有关规范函数的信息,请参阅规范函数(实体 SQL)。
其中规范函数
所有数据提供者都支持,并且可以被所有查询技术使用。提供者不能扩展规范函数。这些规范函数将被转换为提供者的相应数据源功能。这允许跨数据源以通用形式表示的函数调用。
提供在 LINQ to Entities 查询中调用数据库中的函数的公共语言运行时 (CLR) 方法。
因此,尽管这两组函数都被转换为原生 SQL,但 SQLFunctions 是特定于 SQL Server 的,而 EntityFunctions 不是。
当我读到它时。CLR 将 EntityFunctions 函数转换为所有数据提供者都支持的“规范函数”。
但是 SqlFunctions 让SQL Server来完成这项工作,它们只为 SQL Server 指定。
SqlFunctions
是 EF4 中引入的静态类,在程序集中System.Data.Entity
。它包含一长串方法Cos, DateAdd, DateDiff, DatePart, GetDate, Exp, Sign
,例如映射到 SQL Server 函数的方法。这些静态函数可以在 LINQ to Entities 查询中调用。
EF4 还引入了静态EntityFunctions
类。此类公开了可在 LINQ to Entities 查询中使用的概念模型规范函数。这些函数映射到 System.Data.Metadata.Edm 命名空间中的函数,并且它们仅在概念模型中可用。
欲了解更多信息,请单击此处
万一有人遇到这个旧帖子,System.Data.Entity.EntityFunctions
现在已过时并替换为System.Data.Entity.DbFunctions
.