Comment réparer “SqlException: La conversion d'un datetime2 type de données à un type de données datetime entraîné dans une gamme de valeur.”
SqlException: La conversion d'un datetime2 type de données à un type de données datetime entraîné dans une gamme de valeur.
mon code ressemble à ceci:
using (var contxt = new realtydbEntities())
{
var status = GetStatus();
var repIssue = new RepairIssue()
{
CreaterId = AuthorId,
RepairItemDesc = this.txtDescription.Text,
CreateDate = DateTime.Now,//here's the problem
RepairIssueStatu = status
};
contxt.AddObject("RepairIssues", repIssue);
contxt.SaveChanges();
}
la CreateDate propriété de la cartographie pour une colonne de type smalldatetime.
comment faire de ce code à exécuter?
Double Possible de La conversion d'un datetime2 type de données à un type de données datetime entraîné dans un hors-de-gamme?
OriginalL'auteur Scott 混合理论 | 2012-05-08
Vous devez vous connecter pour publier un commentaire.
La racine de votre problème, c'est que le C# objet DateTime est "plus grand" que SQL du type smalldatetime. Voici un bon aperçu des différences: http://karaszi.com/the-ultimate-guide-to-the-datetime-datatypes
Si vraiment vos options sont:
DateTime.Now will
rentre pas dans un SmallDateTime. Ce n'est pas tellement au sujet de la taille, mais au sujet de la portée et de la précision et de l'exactitude qu'il peut stocker.DateTime.Now
devrait toujours être une valeur valide pour un champ SmallDateTime (sauf si vous mettez votre PC à l'arrière d'horloge de 300 ans), cependant je suis actuellement confronté à exactement la même erreur en essayant tout simplement de sauver une " DateTime.Maintenant, la " valeur de {04/10/2013 12:49:00} dans un SQL champ SmallDateTime. C'est frustrant que je ne peux pas trouver une réponse correcte n'importe où sur.Une conversion automatique à partir d'une "grande" de type pour un "petit" de type est rejetée parce que l'information pourrait être perdu dans la transformation. Cela est d'autant plus vrai si les "grands" signifie "peut contenir plus grand nombre", ou s'il signifie "peut contenir plus de précision". C# suppose que ces fractions de secondes sont importantes, sauf si vous dites qu'ils ne le sont pas (par exemple, avec un cast explicite).
Désolé, vous avez mal compris mon commentaire. Je voulait simplement la réponse doit avoir expliqué pourquoi dateTime.Maintenant, ne s'inscrirait pas dans une SmallDateTime. Je ne demande pas une explication 🙂
OriginalL'auteur Jason
J'ai eu la même exception, mais c'est parce que non nullable datetime bien que le fait de prendre le min valeur de type datetime. Ce n'était pas un smalldatetime à la DB, mais le min datetime de C# dépasser la limite de min datetime de SQL.
La solution était évidente, définissez le type datetime correctement.
BTW, le code n'était pas la mienne, et c'est pourquoi je n'étais pas au courant de ce bien 🙂
OriginalL'auteur Milton
SqlDateTime vous permettra de faire ce que vous avez besoin.
SqlDateTime
de laDateTime
comme vous le suggérez, alors usage de sonValue
pour l'EF mise à jour (comme le EF de la propriété est un DateTime) vous obtenez toujours exactement le même message d'erreur (si vous avez cette erreur). Cette réponse semble incorrecte, pour EF (dont la question est sur), sauf si vous pouvez préciser comment cela résout le problème.OriginalL'auteur Rob
J'ai eu cette erreur parce que j'avais ajouté une colonne datetime à ma table SQL et l'application SANS supprimer les anciennes données. J'ai trouvé que je pouvais mettre à jour de nouveaux enregistrements; mais, les dossiers qui étaient sur la table avant l'ajout du champ jeté cette erreur lors d'une mise à jour a été tentée sur l'un d'eux.
OriginalL'auteur midohioboarder