#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
, он работает нормально. но только с этим удалением это не работает.
Комментарии:
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());
}
}