2012-07-11 22 views
7

W mojej klasie mam te ustawiające/pobierające:Jak zaprojektować klasę wokół wartości null z bazy danych?

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 jest typu non-pustych. Tak więc, po pobraniu moich danych z poprzedniej bazy danych, które przekazuję do konstruktora klasy, pojawia się błąd, gdy wartość StartDate ma wartość null.

W jaki sposób należy projektować wokół tego?

Dzięki Eric

Odpowiedz

14

można dokonywać żadnych pustych struct wychodząc z .NET 2.0.

public DateTime? StartDate { get; set; } 

Uwaga: ?. Jest to operator kompilatora, który tworzy Nullable<DateTime>.

Kiedy wyciągając go z czytnika, można to zrobić

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

Oto więcej informacji na pustych typów: http://www.codeproject.com/Articles/275471/Nullable-Types-in-Csharp-Net

+0

@NominSim Nie ty. 'DateTime' jest typem wartości. –

+0

Whoops. Masz rację. – NominSim

+0

@ DanielA.White ['Nullable ' jest również typem wartości] (http://msdn.microsoft.com/en-us/library/b3h38hb0.aspx), ale musi mieć kilka specjalnych bufetów, które będą używane z 'jak", prawdopodobnie te same gąty, które pozwalają ci przypisać 'null'. –