我没有使用DateTime2时出现DateTime2错误

时间:2013-05-28 14:07:38

标签: c# asp.net-mvc entity-framework asp.net-mvc-4 entity-framework-5

我在控制器上运行创建操作时出现此错误:将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的来源。

2 个答案:

答案 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错误