【发布时间】:2014-10-26 00:00:29
【问题描述】:
我的模型包含一个可为空的日期时间属性。我正在使用 CodeFirst
public DateTime? GoDate { get; set; }
我想在该字段中插入一个空值,但 EF 插入了通常的 00/00/0001 日期而不是空值,这也给了我一个错误。
我使用的是 microsoft sql server 2012。
DateTime? date = null;
var entity = new Model()
{
GoDate = date
};
DataContext.Models.Add(entity);
DataContext.SaveChanges();
把错误告诉我。
将 datetime2 数据类型转换为 datetime 数据类型导致值超出范围。\r\n语句已终止。
这是因为 sql server datetime 不能有 00/00/0001,EF 会在向数据库中插入空 datetime 后自动生成。
我想在数据库中插入 null。
【问题讨论】:
-
您使用的是哪个数据库? SQL 服务器?当你说它“给[你]一个错误”时,你会收到什么错误?您是先使用数据库还是先使用代码?
-
插入的代码在哪里??
-
使用 Nullable
还是 DateTime?应该让它接受NULL。数据库中的列是否标记为“NOT NULL”? -
在数据库中,该字段被标记为 NULL。同样的问题是,如果 datetime 为 null 并且 sql server 没有 00/00/,实体框架会生成一个 datetime 值 00/00/0001日期为 0001。我需要停止实体生成该默认值。
-
在做
SaveChanges()时检查生成的SQL并贴在这里。
标签: c# asp.net entity-framework