我在控制器上运行创建操作时出现此错误:将datetime2数据类型转换为日期时间数据类型会导致超出范围的值“
这是我的Domain类:
public class MyEntity
{
public Guid Id {get; set;}
public string Name {get; set;}
public DateTime DateAdded {get; set;}
}
在控制器“POST”中创建我有这个动作:
[HttpPost]
public ActionResult Create(MyEntity entity)
{
entity.Id = Guid.NewGuid();
entity.DateAdded = DateTime.Now;
// the name will be added from the view
db.MyContext.Add(entity);
db.Save();
}
我不确定datatime2的来源。
答案 0 :(得分:2)
实体框架,在建模SQL Server数据库时,认为类型为DateTime2
的所有日期字段。
因此,如果在SQL Server数据库中,某个字段实际上定义为DateTime
,那么当您将日期留空或指定另一个范围内的值时,您将会出现超出范围的问题适用于DateTime2
但超出DateTime
的范围。实体框架本身并不能解决这个问题,因为它只假设DateTime2
。
解决方案是检查您是否填写了所有日期字段的值,并且它们在范围内。
答案 1 :(得分:0)
我修好了。我忘了/看了我有一个“DateChange”字段
现在可以使用
public class MyEntity
{
public Guid Id {get; set;}
public string Name {get; set;}
public DateTime DateAdded {get; set;}
public DateTime DateChanged {get; set;}
}
在控制器“POST”中创建我有这个动作:
[HttpPost]
public ActionResult Create(MyEntity entity)
{
entity.Id = Guid.NewGuid();
entity.DateAdded = DateTime.Now;
entity.DateChanged = DateTime.Now;
// the name will be added from the view
db.MyContext.Add(entity);
db.Save();
}
仍然不确定为什么会为。* / p>转换datetime2错误