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();
还有很多方法。。。