2017-07-05 54 views
0

我得到這個錯誤:無法將NULL值插入'EntryDate'列中的表'eApps.Logs.dbo.Logs';列不允許有空值。 INSERT失敗

Cannot insert the value NULL into column 'EntryDate', table 'eApps.Logs.dbo.Logs'; column does not allow nulls. INSERT fails.

我有一個標準添加功能EF 6

public Logs AddLog(Logs p) 
    { 
     Logs.Add(p); 
     SaveChanges(); 
     return p; 
    } 

我已經在我的類中定義的字段:

[DatabaseGenerated(DatabaseGeneratedOption.Computed)] 
    public DateTime EntryDate { get; set; } 

我應該在我的控制器中填充這個字段嗎?

+0

指定它爲可爲空'公衆的DateTime? EntryDate {get;組; }' – John

+0

表中的業務規則要求該字段不爲空 – Lyle

+0

由於標記爲計算,您將無法編寫該字段 – bubi

回答

0

我加在SQL Server中的EntryDate領域的約束默認這一領域的GETDATE()

1

請注意,表中第EntryDate列不允許NULL。因此,您必須確保對象p獲得有效日期。其他選項可能是更改表架構並修改EntryDate列以接受NULL。

+0

該字段用作每個日誌的數據庫生成時間戳 – Lyle

+0

您可以創建一個約束在添加記錄時自動填充日期時間字段。你可以從[鏈接]獲得幫助(https://stackoverflow.com/questions/10720486/date-timestamp-to-record-when-a-record-was-added-to-the-table) – MKR

+2

如果你正在使用CodeFirst生成模式,然後將此屬性添加到屬性中:[SqlDefaultValue(DefaultValue =「getdate()」)]如果您首先使用數據庫並具有預定義的模式,則Manoj指出,添加默認約束到你的桌子。 DatabaseGenerated屬性只是告訴EF數據庫將處理生成,但您需要設置數據庫來生成該值。 –

相關問題