web-dev-qa-db-fra.com

La conversion d'un type de données datetime2 en un type de données datetime a entraîné un dépassement de la plage?

Je travaille sur une application qui contient un datepicker et si je mets l'heure dans ce sélecteur sur une valeur très ancienne ou très lointaine lorsque j'essaie de sauvegarder cette valeur dans la base de données, le serveur lève cette exception, quelle en est la cause?

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

31
Geronimo18

DateTimea la plage: 1er janvier 1753 au 31 décembre 9999

DateTime2a la plage: 0001-01-01 à 9999-12-31

Ainsi, si vous entrez une date antérieure à 1753, vous obtiendrez cette erreur lorsque le champ de la table est de type DateTime.

66
AnthonyWJones

Entity Framework ajoutera une date par défaut pour le champ de valeur {01/01/0001 00:00:00}. Cette date est en dehors de la plage de génération de date SQL. Donc, pour que cela fonctionne, nous devons demander à EF de ne pas générer de date par défaut. Nous pouvons la rendre nulle en procédant comme suit dans le modèle de cette classe.

Dans ce cas, une valeur par défaut est générée pour le champ LastLoggedIn par EntityFramework. Si ce champ de la base de données peut prendre la valeur null, cela signifie que nous pouvons le rendre nul en procédant comme suit dans le modèle

 [Display(Name = "LastLoggedIn")]
        public DateTime? LastLoggedIn { get; set; }
23
Hari Gillala
Products prd = new Products();            
prd.CreatedDate = DateTime.Now;

Vous pouvez ajouter comme ci-dessus

3
Alparslan ŞEN

Cette erreur peut également être due à une orthographe incorrecte du nom du champ dans la liste de liaisons d'une action du contrôleur. Dans ma situation, la date par défaut était une date hors limites, car le champ de date n'était pas lié comme je le pensais.

0
Kevin Francis