被Entity Framework Core的細節改進震撼了一下


今天用 SQL Server Profiler 查看 Entity Framework Core 生成的 SQL 語句時,突然發現一個細節改進,並且被它震撼了一下:

exec sp_executesql N'SELECT [u].[UserId]
FROM [Users] AS [u]
WHERE [u].[LoginName] = @__loginName_0',N'@__loginName_0 nvarchar(128)',@__loginName_0=N'test'

震撼之處就是這個 u(表的別名),它可不是 EF Core 隨意起的名字,而是來自 LINQ 代碼中的命名:

public IQueryable<User> GetByLoginName(string loginName)
{
    return _users.Where(u => u.LoginName == loginName);
}

對比一下 Entity Framework 生成的 SQL 語句:

exec sp_executesql N'SELECT TOP (1) 
    [Extent1].[UserID] AS [UserID]    
    FROM [dbo].[uc_Users] AS [Extent1]
    WHERE (([Extent1].[LoginName] = @p__linq__0)',N'@p__linq__0 nvarchar(128)',@p__linq__0=N'test'

這里的 Extent1 就是隨意起的名字。

嗯,Entity Framework Core 干的漂亮!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM