有什么区别? 在获取数据并将它们存储在内存中之前,它们是否都用于在sql端执行函数?
P.S:
两者都用于linq中。
答案 0 :(得分:16)
正如文档所述EntityFunctions
提供公开语言运行时(CLR)方法,公开概念 LINQ to Entities查询中的模型规范函数。有关信息 关于规范函数,请参阅Canonical Functions(Entity SQL)。
受所有数据提供程序支持,并且可供所有查询使用 技术。规范函数不能由提供者扩展。 这些规范函数将被转换为相应的数据 提供者的源功能。这允许功能 调用以数据源的通用形式表示。
提供调用函数的公共语言运行时(CLR)方法 LINQ to Entities查询中的数据库。
因此,尽管两组函数都被转换为本机SQL,但SQLFunctions是SQL Server特定的,而EntityFunctions则不是。
答案 1 :(得分:5)
正如我读到的那样。 CLR将EntityFunctions函数转换为所有数据提供者都支持的“规范函数”。
但是SqlFunction使 SQL Server 能够完成工作,并且只为SQL Server指定了。
答案 2 :(得分:4)
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命名空间中的函数,它们仅在概念模型中可用。
有关详情,请点击here
答案 3 :(得分:2)
如果有人遇到过这篇旧帖子,System.Data.Entity.EntityFunctions
现已过时并被System.Data.Entity.DbFunctions
取代。