C# .NET 中 LINQ to Entities查询中使用时转换为数据库函数的CLR方法(EF.Functions)

EF.Functions 映射

由于并非所有数据库函数都有等效的 C# 函数,因此 EF Core 提供程序提供了特殊的 C# 方法来调用某些数据库函数。 这些方法通过 EF.Functions 定义为扩展方法来用于 LINQ 查询中。 这些方法是特定于提供程序的,因为它们与特定数据库函数密切相关。 因此,适用于某个提供程序的方法很可能不适用于任何其他提供程序。 此外,由于这些方法旨在调用所转换查询中的数据库函数,因此尝试在客户端上计算这些方法会引发异常。

EF

在应用程序代码中非常有用的静态方法,其中没有要从中访问方法的 EF 类型。 例如,在 LINQ 查询中引用阴影状态属性。

Functions属性

提供在 LINQ to Entities 查询中使用时转换为数据库函数的 CLR 方法。

属性值 DbFunctions

提供在 LINQ to Entities 查询中使用时转换为数据库函数的 CLR 方法

以下列举一些常用的方法:

Like(DbFunctions, String, String) SQL LIKE 操作的实现。 在关系数据库中,这通常直接转换为 SQL。

var data = dbContext.T_UserInfor.Where(u => u.userName.Contains("hello")).ToList();
var data = dbContext.T_UserInfor.Where(u => EF.Functions.Like(u.userName, "%hello%")).ToList();

DateDiffSecond(DbFunctions, DateTime, DateTime)计算 在 和 endDate之间startDate跨越的第二个边界的数目。 对应于 SQL Server 的 DATEDIFF(second, @startDate, @endDate)。

  var data = (from p in dbContext.T_UserInfor
               where p.Id==1
               select new {
                 TimeDifference = EF.Functions.DateDiffSecond(v.StartTime, v.EndTime)
             }).ToList();

还有很多方法。。。

posted @ 2024-01-27 15:27  清和时光  阅读(43)  评论(0编辑  收藏  举报