2012-07-11 8 views
7

En mi clase I tienen estos setters/captadores:¿Cómo diseñar clases en torno a los valores nulos de la base de datos?

public int Id { get; set; } 
public String ProjectName { get; set; } 
public String ProjectType { get; set; } 
public String Description { get; set; } 
public String Status { get; set; } 
public DateTime StartDate { get; set; } 

DateTime es un tipo no anulable. Entonces, cuando recupero mis datos de mi base de datos heredada que paso al constructor de la clase, recibo un error cuando StartDate es nulo.

¿Cómo debo ir sobre el diseño de todo esto?

Gracias Eric

Respuesta

14

Usted puede hacer que cualquier anulable estructura comenzando con .NET 2.0.

public DateTime? StartDate { get; set; } 

Fíjate ?. Es un operador de compilación para hacer Nullable<DateTime>.

Cuando sacándolo del lector, usted puede hacer esto

obj.StartDate = reader["StartDate"] as DateTime?; 

Aquí hay más información sobre los tipos anulables: http://www.codeproject.com/Articles/275471/Nullable-Types-in-Csharp-Net

+0

@NominSim no lo hace. 'DateTime' es un tipo de valor. –

+0

Whoops. Tienes razón. – NominSim

+0

@ DanielA.White ['Nullable ' también es un tipo de valor] (http://msdn.microsoft.com/en-us/library/b3h38hb0.aspx), pero debe tener algunos gubbins especiales para usar con 'como 'así, probablemente los mismos gubbins que le permiten asignar' null' a él. –

Cuestiones relacionadas