Datetime2 to Datetime выдает ошибку, но Datetime не передается - PullRequest
0 голосов
/ 25 октября 2019

Я использую Entity Framework для передачи данных в таблицу. В представлении я собираю дату, но так как таблица настроена, даты не передаются в базу данных как даты. Вместо этого день, месяц и год передаются как отдельные значения в виде целых чисел. Итак, на 25.10.2009 вы отправляете 25, 10, 2019 как целые, чтобы заполнить отдельные столбцы. Ничто другое не имеет отношения к датам.

Однако, когда я пытаюсь сохранить saveChanges (), выдается следующая ошибка:

{"Преобразование типа данных datetime2 в тип данных datetime привело к потере-range value. \ r \ nОпределение прервано. "}

Я не обращал внимания на эту ошибку раньше, когда проходили dateTimes, но я никогда не видел его, когда база данныхне получая дату времени. Вот модель:

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

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

            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();

Вот две модели, которые я использую для просмотра. var GeneralExperience происходит из класса опыта. (не беспокойтесь о части isSCUBA. Она выдает ту же ошибку)

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.
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...