老师你好,下面是我做的删除预约事件的程序,如果是删除客户,对应的预约列表如何删除?

来源:11-15 【重构】添加新预约

慕瓜0222608

2023-09-06

下面是我凭感觉加的程序,有没有问题,哪里可以改进?

  1. 在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);
    }
    }
  2. 在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. 错误处理: 添加错误处理,以便在出现异常时能够捕获并处理。
0
0

C#速成指南--从入门到进阶,实战WPF与Unity3D开发

系统掌握C#核心和应用,获得全行业适配的技能

839 学习 · 198 问题

查看课程