我正在尝试在SQL TimeSpan 2008 R2中存储.Net TimeSpan。
EF Code First似乎建议将其存储为SQL中的Time(7)。
但是,.Net中的TimeSpan可以处理比24小时更长的时间。
在SQL TimeSpan中存储.Net TimeSpan的最佳方式是什么?
发布于 2011-12-14 19:53:55
我会将它作为BIGINT存储在数据库中,并且我会存储刻度数(例如,TimeSpan.Ticks属性)。
这样,如果我想在检索TimeSpan对象时获得它,我可以只执行TimeSpan.FromTicks(value),这将是很容易的。
发布于 2011-12-15 20:42:19
谢谢你的建议。因为在SQL server中没有等效项。我简单地创建了第二个字段,它将TimeSpan转换为ticks,并将其存储在DB中。然后,我阻止存储TimeSpan
public Int64 ValidityPeriodTicks { get; set; }
[NotMapped]
public TimeSpan ValidityPeriod
{
get { return TimeSpan.FromTicks(ValidityPeriodTicks); }
set { ValidityPeriodTicks = value.Ticks; }
}发布于 2014-02-18 09:18:09
如果您不必存储超过24小时,则可以只存储time,因为SQL Server2008和更高版本的映射是
time (SQL Server) <-> TimeSpan(.NET)
如果您只需要存储24小时或更短时间,则无需转换。
来源:http://msdn.microsoft.com/en-us/library/cc716729(v=vs.110).aspx
但是,如果你想存储超过24小时的数据,你需要以节拍存储它,检索数据,然后转换成TimeSpan。例如
int timeData = yourContext.yourTable.FirstOrDefault();
TimeSpan ts = TimeSpan.FromMilliseconds(timeData);https://stackoverflow.com/questions/8503825
复制相似问题