Frage

Bei diesem Projekt, ich bin Tracking, wenn etwas erstellt, bearbeitet und schließlich weiterverarbeitet. Ich habe drei Felder Datetime-Setup für diese. Der folgende Code ist, wenn ich den Datensatz erstellen.

newsArchive.CreateDateTime = DateTime.Now;
newsArchive.ModifyDateTime = DateTime.MinValue;
newsArchive.SendDateTime = DateTime.MinValue;
naRepository.Add(newsArchive);
naRepository.Save();

Ich erhalte „SqlDateTime Überlauf. Muss zwischen 1753.01.01 12.00.00 und 12/31/9999 11.59.59 sein.“ wenn ich versuche, es hinzuzufügen. Ich weiß, ich kann keine NULL senden. Wie würden Sie damit umgehen?

Ich verwende Linq2SQL diese zu verarbeiten.

War es hilfreich?

Lösung

Warum kann man nicht eine Null schicken? AFAIK unterstützt Linq2SQL NULL festlegbare Werttypen; Sie nur die Spalte in der DB sein müssen NULL festlegbare oder L2S nicht die DAO mit dem Nullable Type projiziert.

könnten Sie verwenden (Datetime) (SqlDateTime.MinValue) statt DateTime.MinValue. Dies wird die Mindest SQL-kompatiblen Datetime-Wert verwenden, explizit zu gießeDateTime.

Obwohl beide SqlDateTime und Datetime tatsächlich Speicherzeit als UInt64 „Ticks“ Wert, der Unterschied zwischen den beiden Typen sind, dass SQL Server verwendet eine andere Epoche (Wert für Null) und eine andere Auflösung (was 1 „Zecke“ steht in Bruchteile einer Sekunde) als die Datumzeit des CLR.

Andere Tipps

Welche Version von SQL Server verwenden Sie? Wenn Sie SQL 2008 verwenden (oder 2008 R2) können Sie die datetime2 Datentyp, die das gesamte Spektrum von .NET Datetime-Typ unterstützen kann.

Verwenden Sie andernfalls NULL oder Live innerhalb der Grenzen des Datentyps und DateTime.MinValue überschreitet die Grenze des SQL Datetime-Typ (Modell eine Eigenschaft vom Typ Nullable<DateTime> haben müssen).

Erstellen Sie Ihr eigenes Mindest Datum - einen Date-Variable mit dem Wert 1753.01.01 00.00.00 und Verwendung, dass anstelle von DateTime.MinValue

Der datetime2 Datentyp erlaubt Daten bereits im Jahr 1. Sie können auch Datetime verwenden? zu ermöglichen null Daten in Ihrem .NET-Code

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top