La conversion d'un type de données datetime2 en un type de données datetime a donné une valeur hors de portée

j'ai un ASP.NET application MVC où je suis en train d'éditer une base de données existante pour mettre à jour un champ paticulaire, DateTime. Ma base de données comporte 4 champs, dont deux sont DateCreated et DateModified. Lorsque j'essaie de mettre à jour le champ, je veux garder DateCreated le temps la même chose, pas de raison de mettre à jour la date à laquelle il a été créé, et j'ai changer le DateModified temps à l'heure actuelle à l'aide de DateTime.Now

voici le code donné juste au cas où je le ferais quelque chose de mal. C'est la première fois que j'utilise ASP.NET MVC alors va doucement. J'ai vu d'autres réponses où Context est appelé, mais je ne trouve pas de référence. Quand je lance l'application je reçois le message d'erreur dans le titre et le 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");
}

Merci de toute aide est appréciée. Grâce.

22
demandé sur Anthony Forloney 2009-11-05 08:12:01

5 réponses

pour moi, j'avais le même problème, mais le problème était que par défaut quand j'ai sauvegardé mon Model, un DateTime invalide était créé. J'ai eu un champ CreatedOn et ne l'avais pas réglé à quoi que ce soit, ce qui signifie que la valeur était 01/01/0001 qui était une DateTime invalide pour SQL. Le réglage de se débarrasser du problème pour moi.

38
répondu Colin Asquith 2011-01-16 21:57:09

Après la lecture de ce site web j'ai trouvé pour ouvrir le .fichier edmx pour ma base de données et modifier:

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

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

est-ce acceptable ou y a-t-il une meilleure façon de corriger cette erreur?

19
répondu Anthony Forloney 2010-11-08 23:35:27

Vous pouvez également éditer le modèle (ou en EF dans le .edmx) et mettre le StoreGeneratedPattern à calculer pour le champ en question. Cela l'empêchera de sauvegarder cela dans ce champ, car il est calculé par le serveur SQL.

12
répondu Jamiegs 2015-03-05 02:32:44

j'ai la même erreur et j'ai découvert que si vous avez un DB SQL 2008 avec un champ DateTime null, N'assignez pas explicitement Null (rien) au champ dans votre code, cela causera cette erreur, ou vous pouvez changer tous les champs DateTime en DateTime2.

6
répondu InterWAS 2011-07-01 21:55:16

il suffit D'utiliser une DateTime annulable telle DateTime? dans votre domaine propriété entité si votre colonne dans votre base de données peut être null. Cela permettra de le faire fonctionner.

3
répondu Rushino 2013-01-07 04:58:08