DBNull.Value in Typed DataRow

giovedì 11 dicembre 2008 - 17.23

Teech Profilo | Expert

Ho una DataTable tipizzata che mi sono creato ereditando da System.Data.DataTable contenente diverse colonne esposte come proprietà (in questo caso è un dato in sola lettura):
Private _ColonnaCodice As System.Data.DataColumn Protected ReadOnly Property ColonnaCodice() As System.Data.DataColumn Get Return Me._ColonnaCodice End Get End Property
Ogni colonna è aggiunta al DataTable con le seguenti istruzioni:
Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra
Il DataTable lo popolo attraverso dei DataReader che "riempiono" dei DataRow anchessi tipizzati. l problema è quando sul DB ho dei valori NULL: il DB non lo popolo solo io con delle tabelle gestite dal mio programma e quindi non posso operare direttamente sul DB evitando i NULL.
Ho notato che molto tranquillamente e beatamente un DataSet tipizzato creato con l'IDE di VS, quando incontra un valore NULL restituisce un'eccezione: questo comportamento vorrei cambiarlo e gestire l'errore già sui DataRow.
Attualmente ho creato una classe che eredita da System.Data.DataRow e l'ho estesa con dei metodi privati per gestire il valore NULL
Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra
La mia domanda è molto semplice: non volendo fare una Function per ogni tipi esistente in .NET (mi pare una pazzia anche limitando all'enumerazione SqlDbType) posso gestire questo codice con una singola funzione generica? (usare i Generics mi pare possa rispondere in parte alla domanda)
Quello che mi risulta difficile è come assegnare il valore di default in base ai tipi, come recuperare il tipo corretto da processare (il tipo della DataColumn o il SqlDBType dll'item del Datareader) e come riflettere questo in codice... Mi risulta difficile tutto in poche parole...

Avete consigli e dritte da darmi?

Grazie!!!
--------------
Maurizio Brini
--------------
Nessuna impresa è mai stata compiuta da un uomo ragionevole
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5