как удалить данные из локальной базы данных (sqlite), используя код за wpf?

#c# #wpf #sqlite

#c# #wpf #sqlite

Вопрос:

Я хочу сделать что-то вроде того, что когда пользователь нажимает кнопку, он удаляет данные из базы данных (у него будет только одно данные каждый раз, когда пользователь запускает систему). проблема в том, что я пытаюсь использовать этот код для удаления данных, но это не работает.

 public void RemoveOrder(Order order)
    {
     try
        {

            using (tempPosOrderPaymentDBContext db = new tempPosOrderPaymentDBContext ())
            {

                db.Orders.Remove(order);
                db.SaveChanges();
            }


        }
        catch (Exception ex)
        {
            CustomExceptionHandling customExceptionHandling = new CustomExceptionHandling();
            customExceptionHandling.CustomExHandling(ex.ToString());
        }

}
  

когда я пытаюсь добавить данные в базу данных, используя тот же код, но меняю только remove на Add , он работает нормально. но только с этим удалением это не работает.

порядок <code></code> не пуст, потому что, когда я помещаю разбивку, она показывает точно все данные внутри таблицы

Комментарии:

1. откуда берется объект order?

2. @AnsonFong Я обновил свой вопрос. Order это моя таблица внутри моей базы данных.

3. Возможно, что объект order отсутствует в orders в tempDBContext. Давайте сначала попробуем запросить объект order и выполнить действие удаления? Объект order, который вы передали, возможно, не совпадает с tempDBContext. Я всегда запрашиваю и получаю объект из DbContext и выполняю действие удаления / обновления.

4. @AnsonFong Я не знаю, что делать. Как я показываю на рисунке, который я обновил, order содержит все данные из таблицы, но по-прежнему не удаляет строку при этом remove выполнении.

5. Есть ли у вас первичный ключ для объекта order? Можете ли вы показать первичный ключ?

Ответ №1:

Можете ли вы попробовать это, и это должно сработать:

 public void RemoveOrder(Order order)
{
 try
    {

        using (tempPosOrderPaymentDBContext db = new tempPosOrderPaymentDBContext ())
        {
            var orderInDb = db.Orders.First(x=> x.OrderId == order.OrderId);
            db.Orders.Remove(orderInDb);
            db.SaveChanges();
        }


    }
    catch (Exception ex)
    {
        CustomExceptionHandling customExceptionHandling = new CustomExceptionHandling();
        customExceptionHandling.CustomExHandling(ex.ToString());
    }
  

}