Por el aspecto del error, su base de datos está utilizando SmallDateTime como tipo de fecha. Su valor mínimo es 1900-Ene-01. Suponiendo que su entidad es algo como a continuación
public class Game
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public Guid GameId { get; set; }
[Required]
public DateTime GameTime { get; set; }
}
Su valor de GameTime no admite valores NULL, por lo que cuando no establece ningún valor para él, siempre será DateTime.Min, que es 0000-Jan-01. Esto está fuera del rango de SmallDateTime, pero está dentro del rango de DateTime2. Entonces, EF intentará pasar un tipo de SQL DateTime2 al servidor SQL. Debido a que su base de datos usa SmallDateTime, obtendrá el error que se muestra en su pregunta.
Para resolver el problema, tiene las siguientes opciones que se me ocurren:
-
hacer que el campo sea nulo. (siempre debe verificar si sus fechas de entrada están dentro del rango SmallDateTime).
-
o cambie el tipo de fecha a DateTime2 en el servidor SQL
-
o forzar a EF a usar el tipo de datos DateTime2 al crear la base de datos. El código será como algo a continuación. (Este método debería estar dentro de su clase de contexto).
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity()
.Property(t => t.GameTime )
.HasColumnType("datetime2");
}
-
Escriba un asistente de conversión para establecer el valor mínimo de su propiedad DateTime para que coincida con smalldatetime en su aplicación.
-
Escriba un disparador en la base de datos para convertir DateTime2 (del final de la aplicación, pero datetime2 en el final de la base de datos) a smalldatetime.
Con suerte, he entendido tu pregunta correctamente y mi respuesta ayuda.