Migrare Da Linq 2 Sql a Entity Framework

Una delle cose sulle quali sono rimasto piacevolmente sorpreso dall' Entity Framework è il totale controllo che si ha sul caricamento delle tabelle referenziate.

In L2S tutto ciò avviene in modo assolutamente trasparente e non sempre nel migliore dei modi possibili, ad esempio in una relazione molti a molti vengono comunque carcati anche i record nella tabella di relazione intermedia. In EF è possibile invece comandare il caricamento attraverso il metodo Include.

Supponiamo di avere due tabelle Documenti e Classi in realzione molti a molti con una tabella DcocumentiClassi

Dall'oggetto documento avremmo a disposizione la tabella direttamente referenziata DcocumentiClassi che potremmo caricare con

documento.DcocumentiClassi.Load();

però questo non caricherà i record nella tabella Classi, mentre:

var qry = documento.DcocumentiClassi.CreateSourceQuery();

var docsClassi = qry.Include("Classi");

var classi = docsClassi.Select(d => d.Classe).ToList();

farà  eseguire esattamente la query che ci serve:

exec sp_executesql N'SELECT
[Extent2].[IdClasse] AS [IdClasse],
... tralascio gli altri campi...
FROM  [DcocumentiClassi] AS [Extent1]
LEFT OUTER JOIN [Classi ] AS [Extent2] ON [Extent1].[IdClasse] = [Extent2].[IdClasse]
WHERE [Extent1].[IdDocumento] = @EntityKeyValue1',N'@EntityKeyValue1 int',@EntityKeyValue1=1

alla prossima :-D

Print | posted on mercoledì 5 novembre 2008 11:27

Comments have been closed on this topic.