解决在一对多的情况下,如何删除主键数据的同时也删除多个外键数据的问题

博客围绕数据库中进货订单及详情数据的删除展开。在一对多关系里,一个进货订单对应多个订单详情,删除订单时需删除多条详情数据。介绍了获取主键ID筛选详情数据的方法,给出按钮代码及通过post提交数据到控制器的操作,还说明了控制器中按条件查询并删除数据的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1在一对多的时候,比如我现在需要做一个进货订单表,进货订单就是主键ID,还有一个进货定单详情表和商品表,一个进货订单ID对应有多个进货订单详情ID,但是一个订单详情ID对应有1个商品ID,那样就会在数据库中存在,如果你想删除这条进货订单的时候你就需要删除多条订单详情表里面的数据,因为每张进货订单都可能对应有多个商品,所有也就有多条订单详情数据了;
2.因为主键ID是唯一的所有我们可以获取到进货订单主键ID去筛选出这条进货订单里面所包含的多条订单详情数据,
3.首先我们需要获取到主键ID,如下图,第二条数据就是拥有多个商品,所有也就对应有多条订单详情数据,x形状的就是删除按钮,因为这个按钮是在渲染表格的时候自定义的,而且还带有所对应的数据的主键ID,
在这里插入图片描述

4.这是按钮的代码
function setOperate(data) {
var StockIndentID = data.StockIndentID;
var btns = “”;

        btns += '  <a id="operate3" class="operate del" title="删除" onclick="deleteRecord(' + StockIndentID + ');"></a>';
        return btns;
    }

5.这里是通过post提交把数据传递到控制器
function deleteRecord(StockIndentID) {
$.post(“DeleteData”, { StockIndentID: StockIndentID }, function (date) {
if (date == “ture”) {
alert(“删除成功!”);
window.location.replace("/Stock/StockIndent/StockIndent");
} else {
alert(“删除失败”);
}

        })
    }

6.在控制器中通过进货订单ID作为条件去订单详情表里面查询筛选出所有符合条件的数据,然后通过for循环去一

条条地删除数据,然后再去进货订单表里面通过进货订单ID作为条件去进货订单表里面查询筛选出这条数据然后删除

public ActionResult DeleteData(int StockIndentID)
{
var stJson = “”;
List< PW_StockIndentDetail> Date = (from tbStockIndent in myModel.PW_StockIndent
join tbStockIndentDetail in myModel.PW_StockIndentDetail on tbStockIndent.StockIndentID equals tbStockIndentDetail.StockIndentID
where tbStockIndent.StockIndentID == StockIndentID
select tbStockIndentDetail).ToList();
//循环遍历删除订单详情数据
for (var i = 0 ; i < Date.Count; i++)
{
PW_StockIndentDetail stDate = Date[i];
myModel.PW_StockIndentDetail.Remove(stDate);//移除

        }

        PW_StockIndent Date1 = (from tbStockIndent in myModel.PW_StockIndent
                    where tbStockIndent.StockIndentID == StockIndentID
                    select tbStockIndent).Single();

        myModel.PW_StockIndent.Remove(Date1);//移除

      if (myModel.SaveChanges() > 0)
        {
            stJson = "ture";
        }
        return Json(stJson, JsonRequestBehavior.AllowGet);
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值