SQL Entity Unterschied:
Was ist der Unterschied der beiden Aufrufe eines Datensatzes in C# Entity Framework
Bei der Übersetzung zur Datenbank Abfrage in SQL Server
Abfrage 1: FindAsync(ID)
//*get matching Article from Database by ID var dbArticle = await _dbContext.tbl_Articles.FindAsync(id); //*SELECT TOP(1) IDArticle,Title FROM tbl_Articles AS t WHERE IDArticle = @p_0 |
Abfrage 2: FirstOrDefaultAsync(x=>x.IDArticle==id);
_dbContext.tbl_Articles.FirstOrDefaultAsync(x=>x.IDArticle==id); //*SELECT TOP(1) IDArticle,Title FROM tbl_Articles AS t WHERE IDArticle = @p_0 //*first db call ~43ms second call ~5ms |
Beide SQL Abfragen folgen wie hier
SELECT TOP(1) [t].[IDArticle], [t].[Title] FROM [tbl_Articles] AS [t] WHERE [t].[IDArticle] = @__p_0 |
Fazit:
Beide EF Abfragen erfolgen in einer DBCommand SQL Abfrage mit SELECT TOP(1)
Und sind somit identisch in der Geschwindigkeit
info: Microsoft.EntityFrameworkCore.Database.Command[20101] Executed DbCommand (42ms) [Parameters=[@__p_0='?' (DbType = Int32)], CommandType='Text', CommandTimeout='30'] SELECT TOP(1) [t].[IDArticle], [t].[Title] FROM [tbl_Articles] AS [t] WHERE [t].[IDArticle] = @__p_0 info: Microsoft.EntityFrameworkCore.Database.Command[20101] Executed DbCommand (5ms) [Parameters=[@__p_0='?' (DbType = Int32)], CommandType='Text', CommandTimeout='30'] SELECT TOP(1) [t].[IDArticle], [t].[Title] FROM [tbl_Articles] AS [t] WHERE [t].[IDArticle] = @__p_0 |