/ / Meglio uno da ExecuteQuery e ExecuteCommand in Linq - linq

Meglio uno da ExecuteQuery e ExecuteCommand in Linq - linq

Sto lavorando in Linq Ora voglio sapere ciò che è meglio allora dal seguente per eseguire una query sql.

1) ExecuteQuery

2) ExecuteCommand

risposte:

1 per risposta № 1

Entrambi i metodi sono ExecuteQuery ed ExecuteCommandmetodi di LINQ DataContext. Sono meccanismi pass-through per i casi in cui LINQ to SQL non fornisce adeguatamente uno scenario particolare. Sarebbe raro che si usassero questi metodi in LinqToSql perché si perderebbe la potenza espressiva di LINQ che è la ragione principale per l'utilizzo di LINQ. Perderai anche il valore di avere variabili fortemente tipizzate nelle tue query, che è l'altro vantaggio principale dell'uso di LINQ.

È considerata scarsa pratica di programmazione percostruire stringhe SQL Query e passarle direttamente al database, perché i comandi SQL che sono costruiti da elementi stringa sono stati il ​​percorso per l'hacking del database chiamato SQL injection. Quindi, in generale, si consiglia di evitare l'uso di ExecuteQuery e ExecuteCommand, tranne quando assolutamente necessario e con estrema cautela.

Ora che ho detto tutto questo, ecco la spiegazionedi quando quei metodi sarebbero usati. ExecuteQuery verrebbe utilizzato per eseguire un'istruzione Select, mentre ExecuteCommand verrebbe utilizzato per eseguire Insert, Update, Delete o per chiamare una stored procedure.

Tuttavia, si dovrebbe utilizzare la sintassi della query LINQ o la sintassi lambda LINQ per effettuare le chiamate SQL e non utilizzare ExecuteQuery o ExecuteCommand.


0 per risposta № 2

Puoi vedere ExecuteCommand restituire type is int soquesto può essere usato se si desidera troncare la tabella / DROP DROP / reset identità o controllare il valore corrente / impostare i valori ANSI nulli (dove i risultati vengono restituiti). Il tipo di ritorno di ExecuteQuery è IEnumerable, quindi viene utilizzato nei casi in cui l'istruzione SQL fornita restituisce un set di record.

Si prega di aggiungere i vostri commenti se qualcuno ha più approfondimenti.