EF 4.1 Code First: «ненулевое значение типа DateTime» - PullRequest
13 голосов
/ 29 марта 2011

После первоначальной разработки и тестирования я направил свое приложение 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; }
}

Ответы [ 3 ]

25 голосов
/ 29 марта 2011

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

Похоже, что БД, на которую вы указываете, имеет нулевые значения для Date1.Если вы действительно не хотите устанавливать дату для всех строк, просто сделайте ваше свойство Date1 обнуляемым:

public DateTime? Date1{get;set;}

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

8 голосов
/ 17 октября 2012
public DateTime? Date1 { get; set; }

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

2 голосов
/ 19 июня 2015

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

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