C# 使用实体框架为Azure数据库使用TimeSpan格式
我试图使用实体框架将ASP.NET MVC应用程序中的数据插入Azure数据库 在我的数据库中,有一个名为ShutdownTime的列,数据类型为Time。 在我的ASP.NET MVC应用程序中实现了表之后,我可以看到,通过向表中插入数据,我必须使用TimeSpan数据类型C# 使用实体框架为Azure数据库使用TimeSpan格式,c#,asp.net,asp.net-mvc,azure,C#,Asp.net,Asp.net Mvc,Azure,我试图使用实体框架将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 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.999999之间。”
错误似乎很明显。但是我能解决这个问题吗?我不确定我是否认为在时间跨度中存储一天中的某个时间是一个好主意,但错误很明显
newShutdownTime = new TimeSpan(1, 12, 20, 10);
在上一行中,您创建的时间跨度为1天12小时20分钟10秒。显然,这是行不通的,因为时间跨度作为一天中的一个时间段唯一有意义的方法是如果它代表午夜后的时间量。不清楚您希望在一天中的什么时间设置此va;lue to,但以下内容不会以相同方式失败
newShutdownTime = new TimeSpan(0, 12, 20, 10);
这会将该字段设置为12小时20分10秒,或按每日时间12:20:10 时间(7)仅支持小于24小时的时间跨度。阅读这篇文章:
尝试从您的时间跨度中删除日部分
newShutdownTime = TimeSpan(12, 20,10);
如果是关机时间,为什么要使用timespan?改用DateTime对象。TimeSpan由实体框架自动生成。在我的表中,我只是使用了TimeSpan,您确定
TimeSpan
是正确的类型吗?DB Time(数据库时间)字段是一天中的一个时间段(如上午9:30),而不是一个时间跨度(如15分钟)。@Ben Robinson EF不允许dateTime。它生成的时间单位为DBTimespan@user2877820为什么在代码中创建timespan时给1天时间?