我在SQL表,該表中的我有時間列與GETDATE()實體框架和默認日期
的默認值在實體框架,我想它使用SQL日期時間,而不是使用控制檯應用程序運行的計算機的本地日期時間(SQL服務器在後面1小時)。
列不允許空值或者,目前它通過在1/1/0001日期值和我得到一個錯誤:
一個DATETIME2數據類型到datetime數據類型的轉換導致的超出範圍的值。\ r \ n聲明已終止。
謝謝!
我在SQL表,該表中的我有時間列與GETDATE()實體框架和默認日期
的默認值在實體框架,我想它使用SQL日期時間,而不是使用控制檯應用程序運行的計算機的本地日期時間(SQL服務器在後面1小時)。
列不允許空值或者,目前它通過在1/1/0001日期值和我得到一個錯誤:
一個DATETIME2數據類型到datetime數據類型的轉換導致的超出範圍的值。\ r \ n聲明已終止。
謝謝!
None
改變StoreGeneratedPattern
到Computed
會告訴EF不是該列中插入值,從而列將獲得由數據庫生成的默認值。請記住,你將無法傳遞一些價值。
爲什麼EF默認不提供此功能?在數據庫中 - 第一種情況在重新創建模型時很難保持。 –
在OnModelCreating方法中爲該實體設置columnType: modelBuilder.Entity()。Property(s => s.ColumnName).HasColumnType(「datetime2」);
如果您使用流利的API,只需添加到您的DbContext類:
modelBuilder.Entity<EntityName>()
.Property(p => p.PropertyName)
.HasDatabaseGeneratedOption(DatabaseGeneratedOption.Computed);
能否請您分享您的代碼? – spajce
必須避免EF將日期發送到數據庫,以避免DB中的GetDate()值被覆蓋。搜索'DatabaseGenerated'或'StoreGeneratedPattern'(取決於您正在使用的EF版本)和'Computed'以查找正確方向的指示。 – Slauma