老师你好,下面是我做的删除预约事件的程序,如果是删除客户,对应的预约列表如何删除?
来源:11-15 【重构】添加新预约

慕瓜0222608
2023-09-06
下面是我凭感觉加的程序,有没有问题,哪里可以改进?
- 在MainWindow.xaml.cs程序下,添加 RemoveAppointment方法
public void RemoveAppointment()
{
if (SelectedAppointment.Id == 0) { return; }
else
{
using (var db = new AppDbContext())
{
var appointmentToRemove = db.Appointments
.Where(a => a.Id == SelectedAppointment.Id)
.FirstOrDefault();
db.Appointments.Remove(appointmentToRemove);
db.SaveChanges();
}
LoadAppointments(SelectedCustomer.Id);
}
} - 在MainWindow.xaml.cs程序下添加RemoveAppointment_Click事件 和
private void RemoveAppointment_Click(object sender, RoutedEventArgs e)
{
try
{
using (var db = new AppDbContext())
{
var selectedAppointment = (AppointmentViewModel)AppointmentList.SelectedValue;
if (selectedAppointment!=null)
{
_viewModel.RemoveAppointment();
}
}
}
catch (Exception error)
{
MessageBox.Show(error.ToString());
}
}
3.在MainViewModel.cs下添加 SelectedAppointment的构造方法和_selectedAppointment的私有字段
public AppointmentViewModel SelectedAppointment
{
get => _selectedAppointment; set
{
if (_selectedAppointment != value)
{
_selectedAppointment = value;
RisePropertyChanged(nameof(SelectedAppointment));
}
}
}
4.在MainViewModel下添加SelectedAppointment视图模型
public AppointmentViewModel SelectedAppointment
{ get => _selectedAppointment; set
{
if (_selectedAppointment != value)
{ _selectedAppointment = value;
RisePropertyChanged(nameof(SelectedAppointment));}
}
}
5.在 xaml的预约列表的Listview下修改为:< listview Name=“AppointmentList” ItemsSource="{Binding Appointments, Mode=TwoWay}" SelectedItem="{Binding SelectedAppointment, Mode=TwoWay}" DisplayMemberPath=“Time” Height=“270”/>
写回答
1回答
-
阿莱克斯刘
2024-09-27
你的 RemoveAppointment 方法总体上看起来不错,但有一些地方可以改进和优化:
改进建议
1. 简化条件判断: 你可以简化 if 语句,使代码更简洁。
2. 空值检查: 在删除之前,检查appointmentToRemove
是否为null
,以避免潜在的空引用异常。
3. 使用异步方法: 如果数据库操作可能耗时较长,考虑使用异步方法来避免阻塞 UI 线程。
4. 错误处理: 添加错误处理,以便在出现异常时能够捕获并处理。00
相似问题