实体框架6代码插入时的第一个默认日期时间值

Atr*_*gma 6 .net c# sql entity-framework

当我保存对数据库的更改时,我遇到了以下异常:

Cannot insert the value NULL into column 'Registered', table
'EIT.Enterprise.KMS.dbo.LicenseEntry'; column does not allow nulls.
INSERT fails. The statement has been terminated.
Run Code Online (Sandbox Code Playgroud)

相关代码第一个模型属性如下所示:

[DatabaseGenerated(DatabaseGeneratedOption.Identity), DataMember]
public DateTime         Registered          { get; private set; }
Run Code Online (Sandbox Code Playgroud)

...这就是为什么我感到困惑:据我所知,通过提供注释[DatabaseGenerated(DatabaseGeneratedOption.Identity)我正在命令实体框架自动生成字段(在这种情况下:在创建时只有一次.)

所以我期望有一个不可为空(必需)的字段,没有可能在EF处理的情况下手动改变字段.

我究竟做错了什么?


笔记:

  1. 我不想使用Fluent-API,因为我想使用POCO.
  2. 该属性defaultValueSql也不是一个选项,因为我需要依赖该项目的数据库(例如for GETDATE()).
  3. 我正在使用Entity Framework 6 alpha 3,Code First.

Spa*_*rky 3

尝试这个:

[DatabaseGenerated(DatabaseGeneratedOption.Identity), DataMember]
public DateTime?            Registered          { get; private set; }
Run Code Online (Sandbox Code Playgroud)

问号使属性可以为空