EntityFramework未使用默认值更新列

t_p*_*lus 22 c# sql sql-server entity-framework

我通过EntityFramework 4(EF)将对象插入SQL Server数据库.在接收表上有一列(CreatedDate),其默认值设置为getdate().所以我没有把它提供给EF,假设它的值将被SQL Server默认为getdate().

然而,这不会发生; 而EF返回验证错误n SaveChanges().

您知道这件事有什么原因吗?请告诉我.

非常感谢.

mat*_*ser 14

如果您从不想编辑该值(例如创建日期),您可以使用:

[DatabaseGenerated(DatabaseGeneratedOption.Computed)]
public virtual DateTime CreatedDate { get; set; }
Run Code Online (Sandbox Code Playgroud)

这将告诉实体框架该值由数据库控制,但仍将获取该值.

请注意,您无法更改该值,因此如果您只是想要一个初始值,它就不是解决方案.

如果您只想要一个默认值但仍然允许编辑它,或者您正在使用Entity Framework 5及更低版本,则必须在代码中设置默认值.

这里有更多关于此的讨论:

如何在Entity Framework中使用DataBase的默认列值?