Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

598
Vistas
¿Cómo asignar tiempo (0) a TimeOnly Entity Framework SQL Server 2019?

Estoy tratando de usar el nuevo tipo TimeOnly de C# pero cuando llego a hacer mis migraciones tengo el siguiente problema. Estoy usando SQL Server 2019, el error es.

La propiedad 'PassportOffice.CloseTime' es del tipo 'DateTime', que no es compatible con el proveedor de base de datos actual. Cambie el tipo de propiedad CLR o ignore la propiedad usando el atributo '[NotMapped]' o usando 'EntityTypeBuilder.Ignore' en 'OnModelCreating'.

Estoy usando Entity Framework Core 6. El modelo es el siguiente.

 public class PassportOffice { public int Id { get; set; } [Required] public TimeOnly OpenTime { get; set; } [Required] public TimeOnly CloseTime { get; set; } }

Así que he intentado hacer un convertidor TimeOnly

 public class TimeOnlyConverter : ValueConverter<TimeOnly, DateTime> { public TimeOnlyConverter() : base( timeOnly => new DateTime(DateOnly.MinValue.Year, DateOnly.MinValue.Month, DateOnly.MinValue.Day, timeOnly.Hour, timeOnly.Minute, timeOnly.Second), dateTime => TimeOnly.FromDateTime(dateTime)) { } }

Y lo usé en DbContext de la siguiente manera

 protected override void ConfigureConventions(ModelConfigurationBuilder configurationBuilder) { configurationBuilder.Properties<TimeOnly>() .HaveConversion<TimeOnlyConverter>() .HaveColumnType("time(0)"); }

¿Cometí un error? O hay alguna otra forma de solucionar el problema?

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Entity Framework Map CLR type TimeSpan SQL Server type to time

Cambie la definición del modelo como se muestra a continuación

 public class PassportOffice { public int Id { get; set; } [Required] public TimeSpan OpenTime { get; set; } [Required] public TimeSpan CloseTime { get; set; } }

No hay necesidad de convertidor. funcionará como se esperaba

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda