Technology Experience
.NET World

Linq to SQL: ottenere la tabella corretta dato il tipo dell’oggetto

Come requisito, leggetevi prima l’articolo su MSDN pubblicato dal nostro amico Giancarlo “Janky” Sudano su Linq to SQL. Se avete voglia e se volete partire rapidamente con questo ORM, potete dare un’occhiata all’ottimo tutorial del mio omonimo Igor: l’avevo letto quando era stato messo on-line, ma l’ho ripreso ieri quando ho voluto ripercorrere i passaggi sul mio piccolo progetto che io chiamo “campo di battaglia” per studiare le nuove tecnologie ed i nuovi framework ai quali sono interessato.

Ieri sera ho mappato il mio domain-model su un database SQL Server 2005 Express Edition. Il domain-model contiene classi come Player, Team, Match, MatchResolver. In passato – chi di voi è attento se lo ricorderà – ho parlato di HockeyPlayer: qui si parla sempre di sport. Non chiedetemi perchè! 🙂

Arrivo al dunque.

La classe System.Data.Linq.DataContext espone un metodo GetTable che ritorna l’istanza di ITable relativa al tipo di oggetto passato in input al metodo stesso. Ecco un piccolo esempio:

1 public void SaveObject(T oggetto) 2 { 3 if (!init) initialize(); 4 5 ITable table = session.GetTable(oggetto.GetType()); 6 table.InsertOnSubmit(oggetto); 7 session.SubmitChanges(); 8 }

Il metodo SaveObject qui sopra fa parte di una classe del mio Data Access Layer. Prende in input un’istanza di un oggetto che vogliamo salvare su database attraverso Linq to SQL. Il tipo dell’oggetto è espresso tramite T, dal momento che il metodo fa parte di una classe generica, che impone che T derivi da BaseEntity, classe base di tutte le classi del mio domain-model.

Alla riga 5 otteniamo un riferimento alla tabella nella quale deve essere salvato l’oggetto: per farlo facciamo una chiamata a GetTable passandogli il tipo dell’oggetto. L’engine di Linq to SQL ottiene queste informazioni dal files di mappings. Alla riga 6 aggiungiamo l’oggetto con la chiamata ad InsertOnSubmit(), e alla riga 7 rendiamo effettivi i cambiamenti su database. Più facile di così!

Technorati Tags:  

Send to Kindle

Igor Damiani

La sua passione per l'informatica nasce nella prima metà degli anni '80, quando suo padre acquistò un Texas Instruments TI-99. Da allora ha continuato a seguire l'evoluzione sia hardware che software avvenuta nel corso degli anni. E' un utente, un videogiocatore ed uno sviluppatore software a tempo pieno. Igor ha lavorato e lavora anche oggi con le più moderne tecnologie Microsoft per lo sviluppo di applicazioni: .NET Framework, XAML, Universal Windows Platform, su diverse piattaforme, tra cui spiccano Windows 10 piattaforme mobile. Numerose sono le app che Igor ha creato e pubblicato sul marketplace sotto il nome VivendoByte, suo personale marchio di fabbrica. Adora mantenere i contatti attraverso Twitter e soprattutto attraverso gli eventi delle community .NET.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.