Ado*_*rez 4 .net c# datetime entity-framework-6
DateTime
我在我的一个类中定义了一个 Nullable属性:
public DateTime? ControlDate { get; set; }
Run Code Online (Sandbox Code Playgroud)
当使用 EF 6 CodeFirst 从我的模型生成数据库 (SQL Server 2008) 时,我得到:
问题是,当我保存实例时,ControlDate=null
出现以下异常:
conversion of a datetime2 data type to a datetime data type
resulted in an out-of-range value
Run Code Online (Sandbox Code Playgroud)
我读过多篇相关的帖子和文章,说这种情况通常发生在您定义不可为空的 DateTime 属性并尝试在之前未设置有效日期的情况下保存它时,有些人建议将该属性设置为可空,以防属性值可以为空。 null(这是我的特殊情况)。
我的问题是:当我的属性和列类型可为空时,为什么 EF 会尝试设置默认日期。Null 应该是一个有效值,并且应该一直流到数据库,中间没有任何其他转换。
这里有一篇相关文章:Conversion of a datetime2 data type to a datetime data type results out-of-range value
编辑::这是一个非常相似的问题。非常详细的解释,如果有人感兴趣的话。
经验教训: 只是想澄清一下,仔细观察后,我发现这是我这边的问题。在保存我的对象之前,它被设置为:
myObject.ControlDate = new DateTime()
Run Code Online (Sandbox Code Playgroud)
在检查时,它显示了默认的不兼容日期1/1/0001
。众所周知,这是导致此异常的原因。所以我的结论是:
DateTime
将在 SQL Server 中生成datetime
数据类型。DateTime
将能够以 null 的形式保存到数据库中 归档时间: |
|
查看次数: |
12706 次 |
最近记录: |