mon modèle inclut une propriété datetime nullable .Im utilisant CodeFirst
public DateTime? GoDate { get; set; }
Je voudrais insérer une valeur nulle dans ce champ mais EF insère la date habituelle 00/00/0001 au lieu de null, ce qui me donne également une erreur.
im utilisant Microsoft SQL Server 2012.
DateTime? date = null;
var entity = new Model()
{
GoDate = date
};
DataContext.Models.Add(entity);
DataContext.SaveChanges();
donne-moi l'erreur.
La conversion d'un type de données datetime2 en un type de données datetime a entraîné une valeur hors plage.\R\nL'instruction a été terminée.
C'est parce que le datetime du serveur sql ne peut pas avoir 00/00/0001, qu'EF génère automatiquement une fois qu'il insère un datetime nul dans la base de données.
Je veux insérer null dans la base de données.
EF insère la date habituelle 00/00/0001 au lieu de null
Il n'y a rien habituel à ce sujet. Laissé à lui-même, EF 6.1 insère NULL
.
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
var DataContext = new StackOverflowContext();
DateTime? date = null;
var entity = new Model()
{
GoDate = date
};
DataContext.Models.Add(entity);
DataContext.SaveChanges();
}
}
class Model
{
public int ModelId { get; set; }
public DateTime? GoDate { get; set; }
}
class StackOverflowContext : DbContext
{
public DbSet<Model> Models { get; set; }
}
}
Il est fort probable que vos mappages ou votre schéma de base de données soient incorrects.
Ou vous pouvez simplement définir comme ceci:
var entity= new Model
{
GoDate = (DateTime?) null
}
DataContext.Models.Add(entity);
DataContext.SaveChanges();
Je pense que c'est un peu plus propre.
Vous pouvez utiliser quelque chose comme ça dans votre modèle. puis l'envoi de null à partir de votre contrôleur fonctionnera bien.
[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)]
[Display(Name = "Date")]
public DateTime? Date { get; set; }
Remarquez le "?" avant la date DateTime
Vous pouvez utiliser ceci:
Nullable<DateTime> date=null;
var entity = new Model()
{
GoDate = date
};
DataContext.Models.Add(entity);
DataContext.SaveChanges();