1

Kullanıcıyı aşağıda gösterildiği gibi kullanıcı adı/parola ile getirdiğimde Entity Framework 6.1.3 kullanıyorum. EF aslında veritabanına iki SQL sorgusu başlatır. Sorgu çağrılarını denetlemek için SQL Server Profiler kullandım. İkinci çağrıyı engelleyerek yürütme süresini kısaltabilirim.Neden Entity Framework, basitçe tablo satırlarını getirirken iki SQL sorgusunu tetikler?

C# kodu:

Dim oSelectedUser As User = (From oUser As User In oDataContainer.Users Where (oUser.UserName = pUserName And oUser.msPassword = pPassword) Select oUser Where oUser.IsActive = True).SingleOrDefault 

Sorgu # 1:

SELECT TOP (2) 
    [Extent1].[Id] AS [Id], 
    [Extent1].[UserName] AS [UserName], 
    [Extent1].[Password] AS [Password], 
    [Extent1].[Image] AS [Image] 
FROM [dbo].[User] AS [Extent1] 
WHERE 
    ([Extent1].[UserName] = @p__linq__0) AND ([Extent1].[Password] = @p__linq__1) 

Sorgu # 2:

exec sp_executesql N'SELECT TOP (2) 
    [Extent1].[Id] AS [Id], 
    [Extent1].[UserName] AS [UserName], 
    [Extent1].[Password] AS [Password], 
    [Extent1].[Image] AS [Image] 
    FROM [dbo].[User] AS [Extent1] 
    WHERE ([Extent1].[UserName] = @p__linq__0) AND ([Extent1].[Password] = @p__linq__1)',N'@p__linq__0 nvarchar(4000),@p__linq__1 nvarchar(4000)',@p__linq__0=N'usr',@p__linq__1=N'zReNgKelg' 

SQL profilci olay:

enter image description here

+0

Profilci verilerini nasıl yorumlayacağınızı biliyor musunuz? – CodeCaster

+0

@CodeCaster Evet Profiler verilerini ekledim –

+1

İki olay aslında size aynı ifadeyi gösteriyor. RPC: Tamamlanmış olay, tüm çağrı tamamlandığında ve SP: Stmt, saklı yordamın içindeki bir deyimin tamamlandığı zaman içindir. Bu durumda, ikisi de aynı şeydir. – Jeremy

cevap

2

İki olay aslında size aynı ifadeyi gösteriyor. RPC: Tamamlanmış olay, tüm çağrı tamamlandığında ve SP: Stmt, saklı yordamın içindeki bir deyimin tamamlandığı zaman içindir. Bu durumda, ikisi de aynı şeydir.