SQL DateTime字段显示为DateTime?在Entity Framework创建的C#类中

时间:2017-04-19 03:59:38

标签: c# sql-server entity-framework datetime

通过Visual Studio,我使用了Entity Framework来创建与SQL Server Tables相对应的类。 在SQL Server表中,某些字段被定义为" datetime"默认值为(getutcdate())。 映射到数据库表datetime字段的C#类中的Datetime字段附加了"?"

Click to see C# class

谁能告诉我这是什么"?"意味着如果我需要做任何事情来防止一些迫在眉睫的灾难? 感谢任何建议。

1 个答案:

答案 0 :(得分:0)

的DateTime?是Nullable<DateTime>的语法糖,这意味着该值可以存储日期时间或null。常规DateTime无法存储null,因此开发人员可能会使用类似DateTime.Min的内容来表示&#34;没有值集&#34; (但不好的做法)。

您生成的类有DateTime?的原因很可能是因为您的列没有NOT NULL约束(与默认值不同)。即由于服务器CAN在EntityDoB字段中存储NULL,因此生成的类必须能够在代码中处理NULL日期时间。

代码不会失败,并且(假设您可以有一个非指定日期)是正确的。您只需要考虑Nullable将如何影响您的代码,并注意Entity-Framework不尊重默认数据库列 - 如果C#知道该列,EF将指定一个值。