EF 4.1 Code First: "ненулевое значение типа" DateTime "" Проблема
После первоначального dev и тестирования я теперь указал приложение MVC3 на существующую базу данных, содержащую текущие данные.
Однако я получаю эту ошибку, связанную с полем Date1 типа "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'.
Это говорит мне, что все строки в дате должны иметь дату и не быть нулевыми? Что делать, если я не хочу устанавливать дату в определенной строке?
Может ли кто-нибудь предложить совет по решению этой проблемы?
Спасибо Пол
ИЗМЕНИТЬ 1 (Модель проводки)
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; }
}
Ответы
Ответ 1
Это говорит мне, что все строки в дата должна иметь дату и не быть ноль? Что мне делать, если я не хочу установить дату в определенной строке?
Похоже, что вы указываете, что у DB есть нулевые значения для Date1
. Если вы действительно не хотите устанавливать дату для всех строк, просто внесите свойство Date1
nullable:
public DateTime? Date1{get;set;}
В качестве альтернативы вы можете просто ввести дату по умолчанию для всех строк, у которых нет данных, установленных в настоящее время через SQL.
Ответ 2
public DateTime? Date1 { get; set; }
используйте это, ваша модель должна быть рассказана, что в вашей базе данных могут быть нулевые значения, иначе она будет считать, что нет.
Ответ 3
Используйте это:
public Nullable<DateTime> LoginDate { get; set; }