#126 - Simulare la clausola Single con Entity Framework
di Stefano Mostarda, in LINQ, Entity Framework, 10 giugno 2009
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.
Approfondimenti
-
#998 - Effettuare chiamate ad un controller tramite AJAX in ASP.NET MVC
-
#138 - Estrarre un subset di oggetti da una lista non generica con LINQ
-
#166 - Recuperare le funzioni definite nel conceptual schema dell'EDM in Entity Framework
-
Testare il mapping di Entity Framework
-
#111 - Personalizzare la serializzazione delle entità di ADO.NET Data Services
-
#120 - Filtrare i risultati di una query in base ad una lista di dati predefiniti con Entity Framework
-
#979 - ASP.NET ed Entity Framework: Dynamic Data Control
-
Entity Framework e l'estendibilità del designer
-
WPF e Siverlight: Dispatcher e finestre modali
-
#162 - Caricare un file XML da remoto tramite XDocument e HttpWebRequest
-
#139 - Invocare servizi in asincrono con WCF

















Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.