Linq to Entity 語法
using EFCoreLike.Models;
using Microsoft.EntityFrameworkCore;
namespace EFCoreLike
{
internal class Program
{
static void Main(string[] args)
{
using var dbContext = new AdventureWorks2022DbContext();
// StartWith
var startWithResult = dbContext.Person
.Where(p => p.LastName.StartsWith("Hen"))
.ToList();
// EndWith
var endWithResult = dbContext.Person
.Where(p => p.LastName.EndsWith("Hen"))
.ToList();
// Containes
var containResult = dbContext.Person
.Where(p => p.LastName.Contains("Hen"))
.ToList();
// EF.Functions.Like
var functionsResult = dbContext.Person
.Where(p => EF.Functions.Like(p.LastName, "H[a-c]n%"))
.ToList();
}
}
}
產生 TSQL Like 語法觀察StartWith 轉成 關鍵字%
SELECT [p].[BusinessEntityID], [p].[AdditionalContactInfo], [p].[Demographics], [p].[EmailPromotion], [p].[FirstName], [p].[LastName], [p].[MiddleName], [p].[ModifiedDate], [p].[NameStyle], [p].[PersonType], [p].[Suffix], [p].[Title], [p].[rowguid]
FROM [Person].[Person] AS [p]
WHERE [p].[LastName] LIKE N'Hen%'
EndWith 轉成 %關鍵字
SELECT [p].[BusinessEntityID], [p].[AdditionalContactInfo], [p].[Demographics], [p].[EmailPromotion], [p].[FirstName], [p].[LastName], [p].[MiddleName], [p].[ModifiedDate], [p].[NameStyle], [p].[PersonType], [p].[Suffix], [p].[Title], [p].[rowguid]
FROM [Person].[Person] AS [p]
WHERE [p].[LastName] LIKE N'%Hen'
Containes 轉成 %關鍵字%
SELECT [p].[BusinessEntityID], [p].[AdditionalContactInfo], [p].[Demographics], [p].[EmailPromotion], [p].[FirstName], [p].[LastName], [p].[MiddleName], [p].[ModifiedDate], [p].[NameStyle], [p].[PersonType], [p].[Suffix], [p].[Title], [p].[rowguid]
FROM [Person].[Person] AS [p]
WHERE [p].[LastName] LIKE N'%Hen%'
EFCore 2.0 開始支援 EF.Functions.Like 來自訂 TSQL Like 應用
SELECT [p].[BusinessEntityID], [p].[AdditionalContactInfo], [p].[Demographics], [p].[EmailPromotion], [p].[FirstName], [p].[LastName], [p].[MiddleName], [p].[ModifiedDate], [p].[NameStyle], [p].[PersonType], [p].[Suffix], [p].[Title], [p].[rowguid]
FROM [Person].[Person] AS [p]
WHERE [p].[LastName] LIKE N'H[a-c]n%'
EF 6.5.1 StartWith、EndWith 和 Contains 轉出的 TSQL 跟 EFCore 10 是相同的
沒有留言:
張貼留言