Comment utiliser l'objet datareader avec des valeurs null

Dire que j'ai de cette classe:

class myclass
{
    public int Field1{ get; set; }
    public int? Field2 { get; set; } //Note Field2 is nullable
 }

Je suis en train de remplir une liste générique avec des données provenant d'une base de données. Comme GetSqlInt32 implémente INullable j'aurais pensé que le code ci-dessous fonctionne. Il n'a pas. Elle génère une erreur si Champ2 est null.

List<myclass> mylist=new List<myclass>();

int Field1_Ordinal = rdr.GetOrdinal("Field1");
int Field2_Ordinal = rdr.GetOrdinal("Field2");

SqlDataReader rdr = cmd.ExecuteReader(); //Execute a stored procedure to retrieve data from the database

while (rdr.Read())
 {
   mylist.Add(new myclass
   {
      Field1 = rdr.GetSqlInt32(Field1_Ordinal).Value,
      Field2 = rdr.GetSqlInt32(Field2_Ordinal).Value  //Error if field2 is null
   });
 }

Des idées pourquoi il ne fonctionne pas?

OriginalL'auteur Anthony | 2009-09-01