【发布时间】:2020-01-02 23:29:11
【问题描述】:
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;
}
DeathDate 没有 [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;
}
}
}
我正在尝试创建一个家谱程序。
【问题讨论】:
-
你为什么不让它可以为空
DateTime?? -
您是否尝试将
DeathDate标记为可选? -
这两件事都试过了
标签: c# entity-framework datetime sqlexception