Die Konvertierung eines datetime2-Datentyps in einen datetime-Datentyp führte zu einem Wert außerhalb des gültigen Bereichs

asp.net-mvc datetime entity-framework

Frage

Ich habe eine ASP.NET MVC-Anwendung, in der ich eine vorhandene Datenbank bearbeite, um ein bestimmtes Feld, DateTime , zu DateTime . Meine Datenbank hat 4 Felder, von denen zwei DateCreated und DateModified sind . Wenn ich versuche, das Feld zu aktualisieren, möchte ich die DateCreated- Zeit beibehalten , keinen Grund, das Erstellungsdatum zu aktualisieren, und die DateModified-Zeit in DateTime.Now in die aktuelle Uhrzeit DateTime.Now

Hier ist der angegebene Code nur für den Fall, dass ich etwas falsch mache. Dies ist das erste Mal, dass ich ASP.NET MVC verwende. Ich habe andere Antworten gesehen, bei denen Context aufgerufen wird, aber ich kann keinen Hinweis darauf finden. Wenn ich die Anwendung starte, erhalte ich die Fehlermeldung im Titel und der contractEntity.SaveChanges() ist rot.

public ActionResult Edit(Contract editContract) {
var contract = (from c in contractEntity.Contracts where c.Id == editContract.Id select c).First();
if (!ModelState.IsValid)
    return View(contract);
// editContract.DateCreated = contract.DateCreated;
// editContract.DateModified = DateTime.Now;
  contractEntity.ApplyCurrentValues(contract.EntityKey.EntitySetName, editContract);
  contractEntity.SaveChanges();
  return RedirectToAction("Index");
}

Bitte, wird jede Hilfe geschätzt. Vielen Dank.

Akzeptierte Antwort

Nach dem Lesen dieser Website habe ich festgestellt, dass die .edmx-Datei für meine Datenbank geöffnet und geändert wurde:

<...Provider="System.Data.SqlClient" ProviderManifestToken="2008".../>

zu

<...Provider="System.Data.SqlClient" ProviderManifestToken="2005".../>

Ist das akzeptabel oder gibt es einen besseren Ansatz, um diesen Fehler zu beheben?


Beliebte Antwort

Für mich hatte ich das gleiche Problem, aber das Problem war, dass standardmäßig beim Speichern meines Modells eine ungültige DateTime erstellt wurde. Ich hatte ein Feld CreatedOn und hatte nichts festgelegt, was bedeutet, dass der Wert 01/01/0001 war. Dies war eine ungültige DateTime für SQL. Die Einstellung hat das Problem für mich gelöst.



Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum
Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum