Подтвердить что ты не робот

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; }
}
4b9b3361

Ответ 1

Это говорит мне, что все строки в дата должна иметь дату и не быть ноль? Что мне делать, если я не хочу установить дату в определенной строке?

Похоже, что вы указываете, что у DB есть нулевые значения для Date1. Если вы действительно не хотите устанавливать дату для всех строк, просто внесите свойство Date1 nullable:

public DateTime? Date1{get;set;}

В качестве альтернативы вы можете просто ввести дату по умолчанию для всех строк, у которых нет данных, установленных в настоящее время через SQL.

Ответ 2

public DateTime? Date1 { get; set; }

используйте это, ваша модель должна быть рассказана, что в вашей базе данных могут быть нулевые значения, иначе она будет считать, что нет.

Ответ 3

Используйте это:

public Nullable<DateTime> LoginDate { get; set; }