net mvc framework first español code asp c# asp.net entity-framework

c# - mvc - entity framework core español



cómo insertar Datetime nulo en la base de datos con entidad framework codefirst (4)

mi modelo incluye una propiedad datetime anulable. Estoy usando CodeFirst

public DateTime? GoDate { get; set; }

Me gustaría insertar un valor nulo en ese campo, pero EF inserta la fecha habitual 00/00/0001 en lugar de null, lo que también me da un error.

Estoy usando Microsoft SQL Server 2012.

DateTime? date = null; var entity = new Model() { GoDate = date }; DataContext.Models.Add(entity); DataContext.SaveChanges();

dame el error

La conversión de un tipo de datos de datetime2 en un tipo de datos de datetime dio como resultado un valor fuera de rango. / R / nLa declaración ha finalizado.

Esto se debe a que datetime del servidor SQL no puede tener 00/00/0001, que EF genera automáticamente una vez que inserta un datetime nulo en la base de datos.

Quiero insertar nulo en la db.


EF inserta la fecha habitual 00/00/0001 en lugar de nula

No hay nada habitual en ello. Izquierda a sus propios dispositivos, EF 6.1 inserta NULL .

namespace ConsoleApplication1 { class Program { static void Main(string[] args) { var DataContext = new Context(); 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 Context : DbContext { public DbSet<Model> Models { get; set; } } }

Es muy probable que sus asignaciones o el esquema de la base de datos sean incorrectos.


O simplemente puede configurar de esta manera:

var entity= new Model { GoDate = (DateTime?) null } DataContext.Models.Add(entity); DataContext.SaveChanges();

Creo que es un poco más limpio.


Puedes usar algo como esto en tu modelo. entonces el envío nulo de su controlador funcionará bien.

[DataType(DataType.Date)] [DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)] [Display(Name = "Date")] public DateTime? Date { get; set; }

Observe la "?" antes de la fecha y hora


Puedes usar esto:

Nullable<DateTime> date=null; var entity = new Model() { GoDate = date }; DataContext.Models.Add(entity); DataContext.SaveChanges();