Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Datetime2到Datetime引发错误,但未传递任何Datetimes_C#_Asp.net Mvc_Entity Framework - Fatal编程技术网

C# Datetime2到Datetime引发错误,但未传递任何Datetimes

C# Datetime2到Datetime引发错误,但未传递任何Datetimes,c#,asp.net-mvc,entity-framework,C#,Asp.net Mvc,Entity Framework,我使用实体框架将数据传递到表。在视图中,我正在收集一个日期,但由于表的设置方式,日期不会作为日期传递给数据库。相反,日、月和年作为单个值作为整数传递。因此,对于2019年10月25日,您将2019年10月25日全部作为整数发送,以填充单独的列。其他一切都与日期无关 但是,当我尝试saveChanges()时,它会抛出以下错误: {“将datetime2数据类型转换为datetime数据类型导致值超出范围。\r\n语句已终止。”} 在传递日期时间时,我曾经深入研究过这个错误,但在数据库未接收日期时

我使用实体框架将数据传递到表。在视图中,我正在收集一个日期,但由于表的设置方式,日期不会作为日期传递给数据库。相反,日、月和年作为单个值作为整数传递。因此,对于2019年10月25日,您将2019年10月25日全部作为整数发送,以填充单独的列。其他一切都与日期无关

但是,当我尝试saveChanges()时,它会抛出以下错误:

{“将datetime2数据类型转换为datetime数据类型导致值超出范围。\r\n语句已终止。”}

在传递日期时间时,我曾经深入研究过这个错误,但在数据库未接收日期时间时,我从未见过它。模型如下:

public partial class rbExperience
{
    public int rb_id { get; set; }
    public Nullable<short> diver_no { get; set; }
    public Nullable<int> skill_level { get; set; }
    public Nullable<byte> training { get; set; }
    public string instructor { get; set; }
    public Nullable<int> year_of_training { get; set; }
    public Nullable<int> dives_last_12_months { get; set; }
    public Nullable<int> last_rb_dive_month { get; set; }
    public Nullable<int> last_rb_dive_day { get; set; }
    public Nullable<int> last_rb_dive_year { get; set; }
    public Nullable<short> num_hours { get; set; }
    public Nullable<short> num_dives { get; set; }
    public Nullable<short> max_dive_depth_life { get; set; }
}
下面是我用于视图的两个模型。var GeneralExperience来自经验课程。(不要担心这个部分,它会抛出相同的错误)

公共课堂体验
{
[显示(Name=“技能级别”)]
公共列表技能级别{get;set;}
公共字符串SkillLevel{get;set;}
公共布尔已形成训练{get;set;}
[显示(Name=“讲师姓名”)]
公共字符串指导员{get;set;}
[显示(Name=“正式培训年份”)]
公共int培训年{get;set;}
public DateTime LastDive{get;set;}
公共int numberofdive{get;set;}
公共整数{get;set;}
}
公共级再呼吸体验
{
[显示(Name=“此再呼吸机的工作时间?”)]
公共整小时SONRebreather{get;set;}
[显示(Name=“受害者的最大潜水深度是多少?”)]
public int maxdividepth{get;set;}//永远,而不仅仅是一次事件。
}

var moment=new DateTime(generalPerience.LastDive.Year、generalPerience.LastDive.Month、generalPerience.LastDive.Day);然后使用矩对象,因为您知道它是DateTime而不是DateTime2。IE last_rb_dive_year=moment.year“时刻”应该是什么?这是如何解决问题的?这只是在GeneralExperience.LastDive中创建了一个新的DateTime。创建GeneralExperience的模型绑定器是否真的创建了DateTime或DateTime2?GeneralExperience不是来自实体框架,只是rbExperience。我用的另一个模型是手工制作的。因此,db甚至不知道它是否存在触发器、计算列或索引视图的scheck。
            rbExperience experience = new rbExperience()
            {
                rb_id = GeneralExperience.DiverNumber,
                diver_no = 1,
                dives_last_12_months = GeneralExperience.NumberOfDives,
                last_rb_dive_day = GeneralExperience.LastDive.Day,
                last_rb_dive_month = GeneralExperience.LastDive.Month,
                last_rb_dive_year = GeneralExperience.LastDive.Year,
                skill_level = skill,
                training = GeneralExperience.HasFormerTraining ? (byte)1 : (byte)2,
                instructor = GeneralExperience.Instructor,
                year_of_training = GeneralExperience.YearOfTraining,
                num_dives = (short)GeneralExperience.NumberOfDives
            };

            if (isSCUBA)
            {
                experience.max_dive_depth_life = (short)SCUBAExperience.MaxDiveDepth;

            }
            else
            {
                experience.max_dive_depth_life = (short)RBExperience.MaxDiveDepth;
                experience.num_hours = (short)RBExperience.HoursOnRebreather;
            };

                rbExperience retured = db.rbExperiences.Add(experience);
                db.SaveChanges();
public class Experience
{
    [Display(Name = "Skill Level")]
    public List<SelectListItem> SkillLevels { get; set; }
    public string SkillLevel { get; set; }
    public bool HasFormerTraining { get; set; }
    [Display(Name = "Instructor Name")]
    public string Instructor { get; set; }
    [Display(Name = "Year of Formal Training")]
    public int YearOfTraining { get; set; }
    public DateTime LastDive { get; set; } 
    public int NumberOfDives { get; set; } 
    public int DiverNumber { get; set; }

}

public class RebreatherExperience
{
    [Display(Name = "How many hours on this Rebreather?")]
    public int HoursOnRebreather { get; set; }
    [Display(Name = "What is the victim's maximum dive depth?")]
    public int MaxDiveDepth { get; set; } //Ever, not just for the once incident.
}