SqlFunctions和EntityFunctions有什么区别?

有什么不同 ? 在获取数据并将它们存储在内存中之前,它们是否都用于在sql端执行函数?

PS:
两者都用于linq中。

正如文档所述, EntityFunctions

提供公共语言运行时(CLR)方法,在LINQ to Entities查询中公开概念模型规范函数。 有关规范函数的信息,请参阅规范函数(实体SQL)。

Canonical的function

所有数据提供程序都支持,并且可供所有查询技术使用。 规范函数不能由提供者扩展。 这些规范函数将转换为提供程序的相应数据源function。 这允许跨数据源以通用forms表示的函数调用。

而SQLFunctions

提供公共语言运行时(CLR)方法,用于在LINQ to Entities查询中调用数据库中的函数。

因此,尽管两组函数都转换为本机SQL,但SQLFunctions是SQL Server特定的,而EntityFunctions则不是。

正如我读到的那样。 CLR将EntityFunctions函数转换为所有数据提供者都支持的“ 规范函数 ”。

但是SqlFunction使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命名空间中的函数,它们仅在概念模型中可用。

在此处输入图像描述

有关更多信息,请单击此处

如果有人遇到这个旧post, System.Data.Entity.EntityFunctions现在已经过时,并被System.Data.Entity.DbFunctions取代。