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
取代。