Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

584
Views
¿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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!