La differenza tra First e Single in Entity Framework

di Stefano Mostarda, in LINQ, Entity Framework,

LINQ to Entities implementa entrambi i metodi First e Single. Questi due metodi permettono di ottenere lo stesso risultato ovvero ottenere un singolo oggetto da una query. La differenza tra i metodi sta nel codice SQL generato.
Nel caso del metodo First, viene inviata al database una TOP 1 così che solo il primo record venga estratto. Nel caso del metodo Single, viene inviata al database una TOP 2 per verificare che effettivamente ci sia solo un record sul database. Se la query restituisce 2 record, viene sollevata un'eccezione.

Usare Single significa aumentare (seppur impercettibilmente) il numero di dati che potrebbe viaggiare per la rete. Tuttavia questo si verifica solo quando c'è una condizione di errore e quindi (vista la rarità dell'evento) è una situazione tollerabile. Di conseguenza l'uso di Single è consigliato quando si deve ottenere un solo record e si vuol essere sicuri che non ce ne siano altri per la stessa ricerca che effettuiamo.

ctx.Orders.Single(o => o.OrderId == 1)

Commenti

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti

I più letti di oggi