La conversion d'un type de données datetime2 en un type de données datetime a entraîné une valeur hors limites.

asp.net-mvc datetime entity-framework

Question

J'ai une application ASP.NET MVC dans laquelle je modifie une base de données existante pour mettre à jour un champ particulier, DateTime . Ma base de données comporte 4 champs, dont deux DateCreated et DateModified . Lorsque j'essaie de mettre à jour le champ, je souhaite conserver l'heure DateCreated identique, aucune raison de mettre à jour la date de création et je modifie l'heure DateModified à l'heure actuelle à l'aide de DateTime.Now

Voici le code donné au cas où je ferais quelque chose de mal. C'est la première fois que j'utilise ASP.NET MVC, alors allez-y doucement. J'ai vu d'autres réponses où Context est appelé, mais je ne trouve aucune référence à celui-ci. Lorsque je lance l'application, je reçois le message d'erreur dans le titre et contractEntity.SaveChanges() est en rouge.

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");
}

S'il vous plaît, toute aide est appréciée. Merci.

Réponse acceptée

Après avoir lu ce site web, j’ai trouvé que je pouvais ouvrir le fichier .edmx pour ma base de données et changer:

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

à

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

Est-ce acceptable ou existe-t-il une meilleure approche pour corriger cette erreur?


Réponse populaire

Pour moi, le problème était le même, mais le problème était que, par défaut, lorsque j'ai enregistré mon modèle, un DateTime non valide était en cours de création. J'avais un champ CreatedOn et je ne l'avais pas défini sur quoi que ce soit, ce qui signifiait que la valeur était 01/01/0001, ce qui était une DateTime non valide pour SQL. Le réglage m'a permis de résoudre le problème.



Related

Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow