我尝试使用Entity Framework将数据从我的ASP.NET MVC应用程序插入到我的Azure数据库中。
在我的数据库中,我有一个名为ShutdownTime的列,其数据类型为Time。 在将表实现到我的ASP.NET MVC应用程序之后,我可以看到,通过将数据插入到我的表中,我必须使用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 :(得分:1)
时间(7)仅支持不到24小时的时间跨度。阅读这篇文章:
Entity Framework TimeSpan - Time Error
尝试从时间跨度中删除日期部分。
newShutdownTime = TimeSpan(12, 20,10);
答案 1 :(得分:0)
我不确定我是否认为在一个时间段内存储一天的时间是个好主意,但错误很明显。
newShutdownTime = new TimeSpan(1, 12, 20, 10);
在上面一行中,您创建的持续时间为1天,12小时,20分钟和10秒。显然这不起作用,因为时间跨度的唯一方式就是它代表了午夜之后的时间量。现在还不清楚你想要设置这个va的时间; lue但是下面不会以同样的方式失败
newShutdownTime = new TimeSpan(0, 12, 20, 10);
这会将字段设置为12小时,20分钟和10秒,或者将时间设置为12:20:10。