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在服务器/数据库端生成时间戳。
有没有办法解决这个问题?
答案 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.
编辑:尽管图片显示了身份,但我不得不将其更改为“计算的”。原因是,仅在“仅插入”行的情况下,“身份”选项才起作用。如果该行曾被更新(其他列已更新),则将导致错误。 “计算”选项似乎可以与“插入”(运行默认脚本)和“更新”(对于其他列,默认脚本不再运行)配合使用。