4

我有一个 MVC3 应用程序,我想在其中将时间跨度设置为例如 2 天 5 小时。当我输入 02:05:00:00 时,它给了我以下异常:

System.OverflowException: SqlDbType.Time overflow.  Value '2.05:00:00' is out of range.  Must be between 00:00:00.0000000 and 23:59:59.9999999.

当我输入 05:00:00 时,它会正确地将 5 小时保存到数据库中。根据 MSDN 时间跨度有几天的财产。我如何正确设置天数?

模型:

public class ProductionTimeVM
{        
    [Required]
    public TimeSpan DefaultTime { get; set; }
}

在我看来,我只是使用:

@Html.TextBoxFor(x => x.DefaultTime)

对于我的控制器:

public ActionResult SaveProductionTime(ProductionTimeVM vm)
{           
   ProductionTime productionTime = new ProductionTime();
   productionTime.Default = vm.DefaultTime;

   //some more code
 }

有任何想法吗?

4

1 回答 1

7

您可能正在将 TimeSpan 值保存到数据库中具有Time数据类型的列。Time 只能表示一天中的某个时间,因此您不能保存大于一天的 TimeSpan。

我使用具有 bigint 数据类型的列来存储和检索 TimeSpan 的刻度。我也想知道是否有更好的选择。这种行为就像一些流行的 ORM 的默认行为,我认为它误导了很多人。

于 2012-10-12T09:25:58.907 回答