Aufgrund der Art eines Datums- / Uhrzeitdatentyps kann er keinen null
Wert enthalten , dh er muss einen Wert enthalten, er darf nicht leer sein oder nichts enthalten. Wenn Sie eine Datums- / Zeitvariable als markieren, nullable
können Sie ihr nur einen Nullwert zuweisen. Was Sie also tun möchten, ist eines von zwei Dingen (es könnte mehr geben, aber ich kann nur an zwei denken):
Weisen Sie Ihrer Variablen einen Mindestwert für Datum und Uhrzeit zu, wenn Sie keinen Wert dafür haben. Sie können auch einen maximalen Datums- / Zeitwert zuweisen - je nachdem, wie es Ihnen passt. Stellen Sie einfach sicher, dass Sie auf der gesamten Website konsistent sind, wenn Sie Ihre Datums- / Zeitwerte überprüfen. Entscheide dich für min
oder max
und bleibe dabei.
Markieren Sie Ihre Datums- / Zeitvariable als nullable
. Auf diese Weise können Sie Ihre Datums- / Zeitvariable auf einstellen, null
wenn Sie keine Variable haben.
Lassen Sie mich meinen ersten Punkt anhand eines Beispiels demonstrieren. Der DateTime
Variablentyp kann nicht auf null gesetzt werden, er benötigt einen Wert. In diesem Fall setze ich ihn auf denDateTime
Mindestwert setzen, wenn kein Wert vorhanden ist.
Mein Szenario ist, dass ich eine BlogPost
Klasse habe. Es hat viele verschiedene Felder / Eigenschaften, aber ich habe nur zwei für dieses Beispiel verwendet. DatePublished
Dies ist der Zeitpunkt, an dem der Beitrag auf der Website veröffentlicht wurde und einen Datums- / Zeitwert enthalten muss. DateModified
Wenn ein Beitrag geändert wird, muss er keinen Wert enthalten, kann aber einen Wert enthalten.
public class BlogPost : Entity
{
public DateTime DateModified { get; set; }
public DateTime DatePublished { get; set; }
}
Verwenden ADO.NET
, um die Daten aus der Datenbank abzurufen (zuweisen, DateTime.MinValue
dass kein Wert vorhanden ist):
BlogPost blogPost = new BlogPost();
blogPost.DateModified = sqlDataReader.IsDBNull(0) ? DateTime.MinValue : sqlDataReader.GetFieldValue<DateTime>(0);
blogPost.DatePublished = sqlDataReader.GetFieldValue<DateTime>(1);
Sie können meinen zweiten Punkt erreichen, indem Sie das DateModified
Feld als markieren nullable
. Jetzt können Sie festlegen, null
ob kein Wert dafür vorhanden ist:
public DateTime? DateModified { get; set; }
Wenn ADO.NET
Sie die Daten aus der Datenbank abrufen, sieht sie etwas anders aus als oben (Zuweisen null
statt DateTime.MinValue
):
BlogPost blogPost = new BlogPost();
blogPost.DateModified = sqlDataReader.IsDBNull(0) ? (DateTime?)null : sqlDataReader.GetFieldValue<DateTime>(0);
blogPost.DatePublished = sqlDataReader.GetFieldValue<DateTime>(1);
Ich hoffe, dies hilft, Verwirrung zu beseitigen. Da meine Antwort ungefähr 8 Jahre später ist, sind Sie wahrscheinlich inzwischen ein erfahrener C # -Programmierer :)