Technology Experience (Reborn 3)

Contenuti gestiti da Igor Damiani
posts - 895, comments - 1334, trackbacks - 81

My Links

News














  • Questo blog nasce dalle ceneri del mio blog tecnico su UGIdotNET. In questo blog voglio raccontare la mia vita, ovvero quello che non mi sento più di raccontare da nessun'altra parte. Non sono solo un programmatore, dannazione: sono una persona che ha una terribile passione per il proprio lavoro. Ma anche passione per la vita, per le donne, per la birra, per la mia Fiat 500, per il sole ed il mare, per la scrittura, per qualche risata con gli amici, per i sentimenti. Qua troverete tutto questo: buona lettura!.

    23/04/2007,
    Sant'Angelo Lodigiano

Tag Cloud

Archives

Post Categories

Amici

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:  

Print | posted on lunedì 24 marzo 2008 22.37 | Filed Under [ .NET World ]

Feedback

Gravatar

# re: Linq to SQL: ottenere la tabella corretta dato il tipo dell'oggetto

Ciao Igor,

il metodo GetTable supporta i generics quindi il tuo codice può essere modificato così:

1 public void SaveObject(T oggetto)
2 {
3 if (!init) initialize();
4
5 ITable table = session.GetTable<T>();
6 table.InsertOnSubmit(oggetto);
7 session.SubmitChanges();
8 }
25/03/2008 10.21 | Matteo Baglini
Gravatar

# Re: Linq to SQL: ottenere la tabella corretta dato il tipo dell'oggetto

vero Matteo, grazie del tip!
Effettivamente se si va a vedere il file designer.cs creato da VS il codice è proprio come dici tu!
25/03/2008 16.49 | Igor Damiani

Post Comment

Title  
Name  
Email
Url
Comment   
Please add 4 and 2 and type the answer here:

Powered by:
Powered By Subtext Powered By ASP.NET