EF-将空值传递到SQL列,以便插入默认值

时间:2018-07-25 20:43:06

标签: sql-server entity-framework-6

SQL Server表T2具有2列:

Id INT NOT NULL 
CreateDate DateTime NOT NULL, default = (getdate())

此语句正确插入CreateDate值,因为它使用(getdate())作为默认值。

Insert T2 (Id)
Values (1)

到目前为止,一切都很好。问题是当我使用Entity Framework插入行并且仍然希望使用默认(getdate())值时。

由于CreateDate被定义为NOT NULL,因此在使用EF时,不能将其保留为空白或将其保留在Insert语句之外。但是我希望SQL在服务器/数据库端生成时间戳。

有没有办法解决这个问题?

1 个答案:

答案 0 :(得分:0)

多亏了考生的reference to another SO post,我才找到了答案。

转到EDMX图表,您可以设置StoreGeneratedPattern属性来实现我想要做的事情。

有三个数据库生成的选项

Computed : The database generates a value when a row is inserted or updated.
Identity : The database generates a value when a row is inserted.
None : The database does not generate values.

编辑:尽管图片显示了身份,但我不得不将其更改为“计算的”。原因是,仅在“仅插入”行的情况下,“身份”选项才起作用。如果该行曾被更新(其他列已更新),则将导致错误。 “计算”选项似乎可以与“插入”(运行默认脚本)和“更新”(对于其他列,默认脚本不再运行)配合使用。

enter image description here