联合主键的表怎么实现删除?

时间:2021-04-07 13:53:37
有个表有三个主键,应该怎么取键

  private void btnDel_Click(object sender, EventArgs e)
        {

            DataRow dr = null;
            BillPrint bp = null;
            BillPrintCollection bpc_Del = new BillPrintCollection();
            if (MessageBox.Show("是否确定删除?", "提示", MessageBoxButtons.YesNo) == DialogResult.Yes)
            {
                foreach (ListViewItem lvi in lsvDetail.CheckedItems)
                {
                    dr = ((DataRowView)((ListViewEx.OLVListItem)lvi).RowObject).Row;

                    if (dr["UNITS_CODE"] != null && dr["UNITS_CODE"].ToString() != "")
                    {
                        bp = new BillPrint("UNITS_CODE", dr["UNITS_CODE"].ToString());
                        bpc_Del.Add(bp);
                        ds.Tables[0].Rows.Remove(dr);
                    }
                    else
                        ds.Tables[0].Rows.Remove(dr);

                }

                bool flag = false;
                using (System.Transactions.TransactionScope scope = new System.Transactions.TransactionScope())
                {
                    try
                    {
                        using (SubSonic.SharedDbConnectionScope sp = new SubSonic.SharedDbConnectionScope())
                        {
                            foreach (BillPrint bpr in bpc_Del)
                                ProjectCode.Delete("UNITS_CODE", bpr.UnitsCode);

                            scope.Complete();
                            MessageBox.Show("删除成功!");
                            ds = DB.Select().From<BillPrint>().ExecuteDataSet();


                            lsvDetail.DataSource = ds.Tables[0];
                            flag = true;
                        }
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show("删除失败!");
                        flag = false;
                    }
                }

这段实现不了,求高人指教

5 个解决方案

#1


去C++或C#版问吧.

#2


级联删除.

#3


 一开始在创建数据库时,对于有关系的表,要选择级联修改和删除,或是自己写触发器,主表中删除一条记录,子表中相关记录也同时删除。

既然你在程序中处理的话,注意一下,先删除子表,再删除主表数据即可。

#4


级联表数据处理的话,先处理子表,再处理从表。
或者,可以写一个存储过程来触发处理.

#1


去C++或C#版问吧.

#2


级联删除.

#3


 一开始在创建数据库时,对于有关系的表,要选择级联修改和删除,或是自己写触发器,主表中删除一条记录,子表中相关记录也同时删除。

既然你在程序中处理的话,注意一下,先删除子表,再删除主表数据即可。

#4


级联表数据处理的话,先处理子表,再处理从表。
或者,可以写一个存储过程来触发处理.

#5