Blog Stats
  • Posts - 171
  • Articles - 1
  • Comments - 197
  • Trackbacks - 5

 

LINQ to SQL: stored procedure tips

 

Sto realizzando un progetto web ed ho deciso, insieme all'altro membro del team, di utilizzare VS 2008 ed il Framework .NET 3.5.

Come ORM, ho tralasciato il mio personale framework di mapping ed accesso ai dati per utilizzare LINQ to SQL.

Da quello che sto vedendo ammetto che LINQ to SQL ha delle enormi potenzialità e per ora mi ha permesso di creare una architettura applicativa saltando quello strato di "DAL a interfaccie" che nei progetti precedenti rallentava di molto ogni modifica.

Non voglio pero' qui parlare di ipotetiche architetture con LINQ to SQL(spero di trovare il tempo per un post su questo argomento).

Il tip di cui voglio parlare riguarda l'uso di Stored Procedure per ritornare indietro una lista tipizzata.

Scott Guthrie spiega qui come fare: http://weblogs.asp.net/scottgu/archive/2007/08/16/linq-to-sql-part-6-retrieving-data-using-stored-procedures.aspx

Nel mio caso la stored procedure ha una query del genere:

select
 

Product.ProductCode,
 
Category.CategoryID,
 
Category.CategoryCode
from Products
  inner join Categories on 
    P
roducts.CategoryID = Categories.CategoryID

La stored procedure viene mappata nel dbml di Linq To Sql e viene impostato il ReturnType = Product, dove Product è la mia entità che mappa la tabella Products.

Ora, nel codice o nella pagina aspx, mi serve eseguire questa stored e utilizzare poi il campo Product.Category.CategoryCode.

Il mapping dei valori dalla stored procedure alle proprietà della entity e sotto-entities, in questo caso verso Category, avviene solo se nella query ritorno l'identificativo univoco di Category, ossia CategoryID.

Altrimenti, senza Category.CategoryID nella select della stored, da codice mi ritroverò la proprietà Product.Category nulla.

Questo è quanto ho verificato fin'ora.Non ho approfondito ulteriormente i meccanismi di tale funzionamento...potrei quindi aver scritto qualcosa di ovvio oppure non completamente vero...

Technorati Tags: ,

Comments have been closed on this topic.
 

 

Copyright © Luca Mauri