没有输入DateTimePicker时出现实体错误

问题描述 投票:1回答:2
internal class Person
    {
        [Key]
        public int PersonId { get; set; }

        [Required]
        [StringLength(20)]
        public string SurName { get; set; }

        [Required]
        [StringLength(20)]
        public string LastName { get; set; }

        [Required]
        public DateTime BirthDate { get; set; }

        public DateTime DeathDate { get; set; }

        [Required]
        public Gender gender { get; set; }

        [Required]
        [StringLength(20)]
        public string Father { get; set; }

        [Required]
        [StringLength(20)]
        public string Mother { get; set; }



 public Person(string surName, string lastName, DateTime birthDate, Gender gender, string father, string mother)
    {
        SurName = surName;
        LastName = lastName;
        BirthDate = birthDate;
        this.gender = gender;
        Father = father;
        Mother = mother;
    }

我没有DeadDate的[required],仍然只有当DeathDate没有输入时,它才会崩溃。

当我要将它们添加到数据库时,调试器中显示的错误

抛出异常:'System.Data.SqlClient.SqlException'在EntityFramework.dll

private void AddPersonButton_Click(object sender, RoutedEventArgs e)
    {
        if (DeathDateDatePicker.SelectedDate == null)
        {
             Person personsntDeath = new Person(
                SurNameTextBlock.Text.Trim(),
                LastNameTextBlock.Text.Trim(),
                BirthDateDatePicker.SelectedDate.Value,
                (Gender)SexComboBox.SelectedItem,
                FatherTextBox.Text.Trim(),
                MotherTextBox.Text.Trim());

            personsntDeath.InsertIntoDB();
        }
        else
        {

            Person persons = new Person(
                SurNameTextBlock.Text.Trim(),
                LastNameTextBlock.Text.Trim(),
                BirthDateDatePicker.SelectedDate.Value,
                DeathDateDatePicker.SelectedDate.Value,
                (Gender)SexComboBox.SelectedItem,
                FatherTextBox.Text.Trim(),
                MotherTextBox.Text.Trim());

            persons.InsertIntoDB();
        }

        mainWindow.Content = new PageOverviewPersons(mainWindow);
    }

如果DeathDatePicker中没有输入,我希望它在我的数据库中为空。它返回值“ {01/01/0001 00:00:00}”

public bool InsertPerson(Person persons)
    {
        using (DataBaseContext ctx = new DataBaseContext())
        {
            try
            {
                ctx.Persons.Add(persons);
                ctx.SaveChanges();
                return true;
            }
            catch (Exception)
            {
                return false;
            }
        }
    }

我正在尝试创建家谱程序。

c# entity-framework datetime sqlexception
2个回答
1
投票

[DateTime是一个值类型,除非您使用?运算符将其定义为可为空,否则不能为null

public DateTime? DeathDate { get; set; }

0
投票

尝试更改

public DateTime DeathDate { get; set; }

to

public DateTime? DeathDate { get; set; } //Nullable

并使用DateTime?.HasValue属性检查其值。

if (!DeathDateDatePicker.SelectedDate.HasValue)
{
    //  Your code here
}
© www.soinside.com 2019 - 2024. All rights reserved.