Quando si deve selezionare un solo record con Entity framework, si deve ricorrere al metodo Top della classe ObjectQuery o al metodo First di LINQ To Entities. Tuttavia, questi metodi restituiscono solamente il primo record trovato a prescindere da quanti effettivamente corrispondono ai criteri di ricerca. Se si vuole essere certi che una query ritorni un solo elemento, LINQ mette a disposizione l'operatore Single.
Questo operatore non è supportato in Entity Framework 1.0, ma lo sarà nella versione 4.0. Se tuttavia si vuole simulare questo comportamento da subito e lanciare un'eccezione se la query contiene più di un elemento, possiamo sfruttare il metodo Take estraendo solo i primi 2 record. In questo modo, se la query torna 2 record, possiamo sollevare un'eccezione.
var c = ctx.Orders.Where(o => 0.OrderNumber == 1).Take(2);
if (c.Count() == 2)
throw new Exception("E' stato recuperato più di un record");
else
var obj = c.First();Questo meccanismo, è lo stesso che viene utilizzato da Entity Framework 4.0.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Usare la libreria PredicateBuilder per eseguire query tramite Entity Framework che usano or su più campi
Utilizzare ExecuteUpdate per aggiornare colonne JSON in Entity Framework
Mischiare codice server side e client side in una query LINQ con Entity Framework
Creare espressioni riutilizzabili nelle query LINQ per Entity Framework
Eseguire query in contemporanea con EF
Mappare una complex property di una entity su un campo JSON
I più letti di oggi
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- Visual Studio 2013 Live - Online
- Microsoft Security Bulletin MS02-033
- Versione finale per Microsoft Visual J# .NET (e gratuita)
- Moonlight 4 beta: API sempre più complete ed applicazioni out-of-browser anche su Linux
- Annunciato il futuro supporto a Visual Basic in XNA
- Le migliori applicazioni Open Source per il web
- Build 2017: segui con noi tutte le novità mercoledì 10 e giovedì 11 maggio da Seattle!




