Ale*_*lov 11 c# asp.net-mvc datetime entity-framework
我有一个控制器:
[HttpPost]
public ActionResult Create(Auction auction)
{
var db = new EbuyDataContext();
db.Auctions.Add(auction);
db.SaveChanges();
return View(auction);
}
Run Code Online (Sandbox Code Playgroud)
一个模型:
public class Auction
{
public long Id { get; set; }
public string Title { get; set; }
public string Description { get; set; }
public decimal StartPrice { get; set; }
public decimal CurrentPrice { get; set; }
public DateTime StartTime { get; set; }
public DateTime EndTime { get; set; }}
}
Run Code Online (Sandbox Code Playgroud)
并且观点:
@model Ebuy.Website.Models.Auction
@using (Html.BeginForm())
{
<p>
//All the information fields...
@Html.LabelFor(model => model.EndTime)
@Html.EditorFor(model => model.EndTime)
</p>
}
Run Code Online (Sandbox Code Playgroud)
当我尝试运行它时,我收到错误:
将datetime2数据类型转换为日期时间数据类型会导致超出范围的值.
模型 - 控制器 - 视图来自一对一复制的书.
我需要输入到该EndTime字段的格式是什么,所以我不会有这个错误?
mat*_*mmo 22
该错误是因为您实际上没有正确设置这些值,请确保根据应用程序区域设置它们.(例如,dd/mm/yyyy en-GB,mm/dd/yyyy en-US).
它也像你的数据库已设置为使用一datetime2列,并没有一datetime列.
你可以:
A)修改数据库以将类型更改datetime2为datetime
B)通过以下方式更改模型中的类型datetime2:
[Column(TypeName = "DateTime2")]
public DateTime StartTime { get; set; }
[Column(TypeName = "DateTime2")]
public DateTime EndTime { get; set; }
Run Code Online (Sandbox Code Playgroud)
Asa*_*saf 13
当我尝试将未分配的DateTime成员保存到数据库时,我遇到了同样的问题,同时使用了EntityFramework.我在这里阅读了答案,并且我了解到它可以通过将成员声明为可空来解决.我试过了,它奏效了!所以这里有一个代码快照,对于那些需要它的人:
public Nullable<DateTime> MyDateTime { get; set; }
Run Code Online (Sandbox Code Playgroud)
要么
public DateTime? MyDateTime { get; set; }
Run Code Online (Sandbox Code Playgroud)
后来我可以像下面一样使用它:
if(MyDateTime.HasValue)
{
DoBlaBla(MyDateTime.Value);
}
Run Code Online (Sandbox Code Playgroud)
或者只是为它分配一个值,就像什么都没发生一样......
MyDateTime = DateTime.Now;
Run Code Online (Sandbox Code Playgroud)