9

Ich benutze zuerst EF Code mit meiner asp.net mvc-Anwendung. hier ist mein Code:Umwandlung eines datetime2-Datentyps in einen Datetime-Datentypfehler mit EF-Code zuerst?

Request.RequestDate = DateTime.Now; 

die Art der RequestDate Date in meiner Datenbank. und dies ist Fehler, die aufgetreten ist, wenn i den obigen Code verwenden !:

Die Umwandlung eines datetime2 Datentypen in einen Typ Datumsdaten in einem Out-of-Range-Wert geführt.

bitte helfen Sie mir. Vielen Dank.

+0

mögliches Duplikat von [C# Umwandlung eines datetime2-Datentyps in einen datetime-Datentyp] (http://stackoverflow.com/questions/1331779/c-sharp-conversion-of-a-datetime2-data-type-to -a-datetime-data-type) – CodeCaster

+0

Verwenden Sie SQL 2005? datetime2 range ist von 0001/01/01 bis 9999/12/31 daher der Fehler. Wenn ja, müssen Sie die XML-EDMX-Datei bearbeiten –

+0

@json jong: Ich benutze SQL Server 2008 und ich habe keine EDMX-Datei, weil ich Code zuerst!. –

Antwort

11

Edit:

How to fix the datetime2 out-of-range conversion error using DbContext and SetInitializer?

Das Problem ist, dass Sie versuchen, einen Wert zu speichern, die nicht in einer SQL-Datetime-Spalte passen. Die hier angegebene Antwort stoppt die Konvertierung von fehlgeschlagen.

oder ändern Sie in Ihrer Datenbank die Spalten datetime2. Ich weiß nicht genau, warum sie Code ersten Datetime-Spalten statt datetime2

Hier erzeugt ein Beispiel explizit Ihre Datetime-Spalten datetime2 in SQL

Using DateTime properties in Code-First Entity Framework and SQL Server

+0

Ich verwende Code First und ich habe keine EDMX-Datei. –

+0

Ich denke, was Sie tun müssen, ist anzugeben, dass die Spalte vom Typ datetime ist. Hat Ihr Code zuerst die Datenbank generiert? Sie versuchen, ein Datetime2-Objekt in einer Datetime-Spalte zu speichern –

+0

Ja meine Datenbank wurde erfolgreich mit Code zuerst generiert und diese Spalte ist vom Typ datetime. –

5

Auf meiner Seite abzubilden es war, weil Die Datetime konnte nicht nulliert werden und in einigen Fällen wurde das Feld im Konstruktor nicht initialisiert. Ich löste dies durch mein Feld Einstellung als Nullable-

public DateTime? MyDate { get; set; } 

Eine andere Lösung wäre, das Feld im Konstruktor initialisiert werden, egal was.

+0

Dies löste es für mich. Bei Betrachtung ist die Fehlermeldung nicht groß. Ich habe eine DateTime-Spalte erstellt. Warum versucht sie, sie in etwas anderes zu konvertieren? Warum sagst du mir nicht einfach, dass ein Zwang verletzt wurde? – sarin