回答

收藏

EntityFramework不使用默认值更新列

技术问答 技术问答 249 人阅读 | 0 人回复 | 2023-09-13

我正在通过EntityFramework 4(EF)将对象插入SQLServer在接收表上有一列数据库。(CreatedDate),其默认值设置为getdate()。因此,我没有提供它EF,前提是SQL- R, x: o7 X4 Z9 M8 K2 V
Server将其默认值设置为getdate()。/ }: c8 L5 T; F  C" F1 I$ z
但这不会发生。EF返回验证错误n SaveChanges()。
0 P1 O' Q- O4 q1 T5 Q0 Z你知道发生这种情况的任何原因吗?请告诉我。" [/ Z$ |8 `' p/ l
非常感谢。
7 J; T7 f) N8 u" s5 g9 s/ A& r; q                                                                $ v( g$ Y  O1 D- D8 J
    解决方案:                                                               
3 q- I1 V' {$ e2 a+ O, {                                                                如果您永远不想编辑该值(如创建日期),则可以使用:
% p2 k3 ^& c6 `$ w9 a9 H7 _; g+ h[DatabaseGenerated(DatabaseGeneratedOption.Computed)]public virtual DateTime CreatedDate { get; set; }这将告诉Entity Framework该值由数据库控制,但仍将获得。& }; A- x( U! B% D7 t
请注意,您将无法更改该值,因此,如果您只想要一个初始值,则不是解决方案。
/ d/ f  o2 P$ w如果你只想使用默认值,你仍然可以编辑它,或者你使用它Entity Framework 5和较低版本必须在代码中设置默认值。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则