¿Cuál es el tipo de SQL correcto para almacenar un .Net Timespan con valores > 24:00:00?

Resuelto GraemeMiller asked hace 12 años • 10 respuestas

Estoy intentando almacenar un .Net TimeSpanen SQL Server 2008 R2.

EF Code First parece sugerir que debería almacenarse como Time(7)en SQL.

Sin embargo TimeSpan, en .Net puede manejar períodos superiores a 24 horas.

¿Cuál es la mejor manera de manejar el almacenamiento de .Net TimeSpanen el servidor SQL?

GraemeMiller avatar Dec 14 '11 18:12 GraemeMiller
Aceptado

Lo almacenaría en la base de datos como BIGINTy almacenaría la cantidad de ticks (por ejemplo, propiedad TimeSpan.Ticks ).

De esa manera, si quisiera obtener un objeto TimeSpan cuando lo recupere, podría simplemente hacer TimeSpan.FromTicks(value) , lo cual sería fácil.

Tom Chantler avatar Dec 14 '2011 11:12 Tom Chantler

Gracias por el consejo. Como no existe un equivalente en el servidor SQL. Simplemente creé un segundo campo que convirtió el TimeSpan en ticks y lo almacené en la base de datos. Luego evité almacenar el TimeSpan.

public Int64 ValidityPeriodTicks { get; set; }

[NotMapped]
public TimeSpan ValidityPeriod
{
    get { return TimeSpan.FromTicks(ValidityPeriodTicks); }
    set { ValidityPeriodTicks = value.Ticks; }
}
GraemeMiller avatar Dec 15 '2011 12:12 GraemeMiller