2014-11-21 102 views
0

我試圖從我的ASP.NET MVC應用程序中使用實體框架將數據插入到我的Azure數據庫中。使用實體框架爲Azure數據庫使用TimeSpan格式

在我的數據庫中,我有一個名爲ShutdownTime的數據類型爲Time的列。 在我的ASP.NET MVC應用程序中實現了Table之後,我可以看到,通過將數據插入到我的表中,我必須使用TimeSpan數據類型。

public partial class Vm 
{ 
    public int Vm_Id { get; set; } 
    public System.TimeSpan ShutdownTime { get; set; } 
    public string VmName { get; set; } 
    public string DeploymentId { get; set; } 
} 

這是我的功能

public ActionResult Edit(string newVmName, TimeSpan newShutdownTime, string newServiceName, bool startVm) 
{ 
    var NewVmEntry = new Vm(); 
    newShutdownTime = new TimeSpan(1, 12, 20, 10); 

    // Assign standard name 
    NewVmEntry.VmName = "MyVM"; 
    NewVmEntry.ShutdownTime = newShutdownTime; 
    NewVmEntry.DeploymentId = "MyDID"; 

    azureContext.Vms.Add(NewVmEntry); 
    azureContext.SaveChanges(); 

    if (startVm == true) 
    { 
     StartVM(newServiceName, newVmName); 
    } 
    return View("Index"); 
} 

但我一直在SaveChanges()

「SqlDbType.Time溢出得到這個誤差值 '1.12:20:10',超出範圍。必須介於00:00:00.0000000和23:59:59.9999999之間。「

這個錯誤似乎很清楚。但我能解決這個問題嗎?

+0

如果是關機時間,您爲什麼使用時間跨度?改用DateTime對象。 – 2014-11-21 12:03:10

+0

TimeSpan是由實體框架自動生成的。在我的表中,我只是使用時間 – user2877820 2014-11-21 12:03:50

+0

你確定'TimeSpan'是正確的類型嗎? DB時間字段是一天中的時間(例如上午9:30)而非時間間隔(例如15分鐘)。 – 2014-11-21 12:07:09

回答

0

我不確定我認爲在一個時間段內存儲一天的時間是一個好主意,但錯誤非常明顯。

newShutdownTime = new TimeSpan(1, 12, 20, 10); 

在上面的行中,您將創建持續時間爲1天,12小時,20分鐘和10秒的時間段。顯然這不會起作用,因爲時間跨度對於一天中的時間來說是唯一的方式,就是它表示午夜之後的時間量。目前尚不清楚你想要設置這個VA一天中什麼時間,略到,但下面不會以同樣的方式

newShutdownTime = new TimeSpan(0, 12, 20, 10); 

這將字段設置爲12小時20分10秒失敗,或者在12:20:10的時候。