EF 4.1 Code First: "non-null value of type 'DateTime'" Issue
Solution 1
Is this telling me that all rows in the date must have a date and not be null? What do I do if I dont want to set a date on specific row?
It looks like the DB you point at have null values for Date1
. If you do indeed not want to set a date for all rows, just make your Date1
property nullable:
public DateTime? Date1{get;set;}
Alternatively you can just put in a default date for all the rows that do not have a datetime set currently via SQL.
Solution 2
public DateTime? Date1 { get; set; }
use this, your model needs to be told that there can be null values inside your database, otherwise it will assume there isn't.
Solution 3
Use this :
public Nullable<DateTime> LoginDate { get; set; }
Related videos on Youtube
Paul Brown
Updated on July 09, 2022Comments
-
Paul Brown almost 2 years
After initial dev and testing I have now pointed my MVC3 application at an existing database which contains live data.
However I am getting this error related to the field called Date1 of type "datetime".
The 'Date1' property on 'StaffAttachment' could not be set to a 'null' value. You must set this property to a non-null value of type 'DateTime'.
Is this telling me that all rows in the date must have a date and not be null? What do I do if I dont want to set a date on specific row?
Can anyone offer advice on resolving this issue?
Thanks Paul
EDIT 1 (Posting Model)
public class StaffAttachment { [Key] public int AttachmentID { get; set; } public int? StaffID { get; set; } public int? TypeID { get; set; } [Required] [DisplayName("Proof of ID")] public int? AttachmentTypeID { get; set; } [Required] [DisplayName("ID Reference")] public string Reference1 { get; set; } public string Reference2 { get; set; } public string DateType { get; set; } [DisplayName("Expiry Date")] public DateTime Date1 { get; set; } [Required] public DateTime Date2 { get; set; } public DateTime Date3 { get; set; } public DateTime Date4 { get; set; } public string AttachmentPath { get; set; } public int? ValidatedUserID { get; set; } public DateTime ValidatedDate { get; set; } public int? CreatedUserID { get; set; } public DateTime CreatedDate { get; set; } public int? EditedUserID { get; set; } public DateTime EditedDate { get; set; } public TimeSpan TimeStamp { get; set; } public string FileName { get; set; } public byte[] FileImage { get; set; } public int AttachmentSection { get; set; } }
-
Paul Brown about 13 yearsWhen i have "DateTime?", I get build error: "Cannot implicitly convert type 'System.DateTime?' to 'System.DateTime'. An explicit conversion exists (are you missing a cast?)"
-
StriplingWarrior about 13 years@Paul Brown: Then cast it:
Date1 = (DateTime?)item.Date1
-
Paul Brown about 13 yearswhere, in my model? sorry i am a newbie!
-
Paul Brown about 13 yearsOn this line "public DateTime? Date1{get;set;}"
-
Er Mayank almost 10 yearscould anyone please convert this to VB.net code.. I have tried Public Property Date1() As Date?
-
Er Mayank almost 10 yearscould anyone please convert this to VB.net code.. I have tried Public Property Date1() As Date?
-
radkan about 7 yearsThis solved my problem! It actually solved another issue I was having but I looked and looked through various posts and none of the suggestions worked. Thanks.
-
Sushil Jadhav over 5 yearsHow this answer is diff from above one posted by @BrokenGlass ?
-
Lewis over 5 yearsLet's go back to the land of time in 2011 and 2012 to tell you that there is no difference, he never accepted an answer; therefore it was an open question - meaning I answered it without reading @BrokenGlass answer from the year before. Ode to be young and naive again.
-
Ustin over 4 yearsSorry, but both Nullable<DateTime> and DateTime? don't work. Are there any other solutions ?