asp.net-mvc EF 4.1 Code First:“'DateTime' 类型的非空值”问题

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/5465686/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-09-08 01:03:29  来源:igfitidea点击:

EF 4.1 Code First: "non-null value of type 'DateTime'" Issue

asp.net-mvcentity-frameworkasp.net-mvc-3code-firstef-code-first

提问by Paul Brown

After initial dev and testing I have now pointed my MVC3 application at an existing database which contains live data.

在最初的开发和测试之后,我现在将我的 MVC3 应用程序指向一个包含实时数据的现有数据库。

However I am getting this error related to the field called Date1 of type "datetime".

但是,我收到了与“datetime”类型的名为 Date1 的字段相关的错误。

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)

编辑 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; }
}

回答by BrokenGlass

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 Date1property nullable:

看起来您指向的数据库的Date1. 如果您确实不想为所有行设置日期,只需将您的Date1属性设为可空:

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.

或者,您可以为当前没有通过 SQL 设置日期时间的所有行输入默认日期。

回答by Lewis

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.

使用这个,你的模型需要被告知你的数据库中可以有空值,否则它会假设没有。

回答by Persian.

Use this :

用这个 :

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