C# 从数据库中删除用户项
这是我的代码,我想从给定用户id的购物车表中删除完整的数据。 这是我的购物车桌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
[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();