C# 从数据库中删除用户项

C# 从数据库中删除用户项,c#,web-services,C#,Web Services,这是我的代码,我想从给定用户id的购物车表中删除完整的数据。 这是我的购物车桌 [HttpDelete] public HttpResponseMessage DeleteCart(int id) { if (IsNetworkAvailable(0)) { var del = db.Carts.Where(e => e.UID == id); var userid = db.Users.All

这是我的代码,我想从给定用户id的购物车表中删除完整的数据。 这是我的购物车桌

[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语句。

我认为这是您应该做的

    [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块来处理意外异常并将正确的消息返回给客户端

您应该避免在后端对数据库进行冗余调用。我认为,如果您只想从给定的表中删除一个项,那么应该只发送该项的id。如果您在传递项的id时遇到问题,那么客户端的实现可能会有问题

编辑

我想实现的是,每当我给用户id时,它都会删除 完成该用户的购物车数据

我想实现的是,当我给用户id时,它将删除完整的购物车数据

假设您的模型是一个购物车实例包含零到多个食品实例,您将执行以下操作:

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

这将“清除购物车数据”,但不会删除购物车本身。

不,所有这些都毫无意义。。。为什么要得到用户,食物与购物车或用户有什么关系。我想您会遇到很多编译时错误,请包括它们。你有没有想过学习EF教程?也许这会回答你关于如何做的很多问题。同时给你的变量、参数和属性起一个有意义的名字。id,UID,id,del。。。。这些名称使您的代码难以阅读,并且没有任何意义。@Igor我想实现的是,当我给用户id时,它将删除该用户的完整购物车数据
var foodsToDelete = db.Foods.Where(_ => _.Cart.UID == id).ToList();
db.Foods.RemoveRange(foodsToDelete);
db.SaveChanges();