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;
}
}
}
我正在尝试创建家谱程序。
[DateTime
是一个值类型,除非您使用?
运算符将其定义为可为空,否则不能为null
public DateTime? DeathDate { get; set; }
尝试更改
public DateTime DeathDate { get; set; }
to
public DateTime? DeathDate { get; set; } //Nullable
并使用DateTime?.HasValue
属性检查其值。
if (!DeathDateDatePicker.SelectedDate.HasValue)
{
// Your code here
}