Удаление пользовательских элементов из базы данных - PullRequest
0 голосов
/ 25 февраля 2019

Это мой код, я хочу удалить полные данные из таблицы корзины с данным идентификатором пользователя.это моя таблица корзины

[HttpDelete]
    public HttpResponseMessage DeleteCart(int id)
    {
        if (IsNetworkAvailable(0))
        {

            var del = db.Carts.Where(e => e.UID == id);
           var userid = db.Users.All(e => e.ID ==del);
            db.Foods.Remove(del);
            db.SaveChanges();

            return Request.CreateResponse(HttpStatusCode.OK, "Delete Successfully");
        }
        else
        {
            return Request.CreateErrorResponse(HttpStatusCode.InternalServerError, "No Network");
        }

проблема в операторах LInq.

Ответы [ 2 ]

0 голосов
/ 25 февраля 2019

Я хочу добиться того, чтобы, когда бы я ни давал идентификатор пользователя, он удалял полные данные корзины.

Предполагая, что ваша модель состоит в том, что экземпляр Cart содержит от нуля до многих экземпляров Food, которые вы делаетеследующее:

var foodsToDelete = db.Foods.Where(_ => _.Cart.UID == id).ToList();
db.Foods.RemoveRange(foodsToDelete);
db.SaveChanges();

Это "очистит данные корзины", но не удалит саму корзину.

0 голосов
/ 25 февраля 2019

Я думаю, это то, что вы должны сделать

    [HttpDelete]
    public HttpResponseMessage DeleteCart(int id)
    {
        //not sure what it does?
        if (IsNetworkAvailable(0))
        {

            var del = db.Carts.First(e => e.Id == id);
            db.Carts.Remove(del);
            db.SaveChanges();

            return Request.CreateResponse(HttpStatusCode.OK, "Delete Successfully");
        }
        else
        {
            return Request.CreateErrorResponse(HttpStatusCode.InternalServerError, "No Network");
        }
    }

Вы также можете подумать об использовании блоков try / catch при сохранении изменений после удаления для обработки непредвиденных исключений и возврата правильного сообщения обратно клиенту.

Вам следует избегать избыточных вызовов базы данных в вашем бэкэнде.Я считаю, что если вы хотите удалить только элемент из данной таблицы, вы должны только отправить идентификатор этого элемента.Если у вас есть проблема с доставкой идентификатора элемента, то может быть проблема с реализацией на стороне клиента.

Редактировать

Я хочучтобы добиться этого, когда бы я ни давал идентификатор пользователя, он удалит полные данные корзины этого пользователя

        [HttpDelete]
        public HttpResponseMessage DeleteUserCarts(int userId)
        {
            //not sure what it does?
            if (IsNetworkAvailable(0))
            {

                var carts = db.Carts.Where(e => e.UID == userId);
                db.Carts.RemoveRange(carts);
                db.SaveChanges();

                return Request.CreateResponse(HttpStatusCode.OK, "Delete Successfully");
            }
            else
            {
                return Request.CreateErrorResponse(HttpStatusCode.InternalServerError, "No Network");
            }
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...