你的位置:首页 > ASP.net教程

[ASP.net教程]业务系统中的基础数据删除问题,解决办法。


在博客园混了也有几年了。虽然是业余的。但也确实从博客园中学习到不少东西。今天自己也开博了。作为第一篇博客,我就写写自己做业务系统时遇到的问题,和解决办法。还望各位大仙不要喷我哦。

自己做客户端也有些时日了。经常的遇到基础数据的删除问题。好像有不少系统都是不能删除的吧。只是标记一下,不能使用而已。

我想如果是新添加的数据,无关联数据时,物理删除也是无伤大雅的吧。大家看看我的方法吧。其实也是仿Windows 的回收站功能。还请高手指点哦。

首先看一下图片吧。窗体中添加DotNotBar的开关控件,并设置过滤条件。删除时,放到回收站内。在回收站内,再点一下删除时,会搜索此数据是否有关联数据,C#+EF示例:

    private void bindingNavigatorDeleteItem_Click(object sender, EventArgs e)    {      if (tProductBindingSource.Current != null)      {        if (!switchButtonItem1.Value && MessageUtil.ShowYesNoAndTips("确认删除该笔商品数据?删除后商品将放入商品回收站内!") == DialogResult.Yes)        {          var one = ((t_Product)tProductBindingSource.Current);          one.Enable = false;          db.SaveChanges();        }        else         {          try          {            var one = ((t_Product)tProductBindingSource.Current);            var more = db.t_Product.AsNoTracking().Where(p => p.ProductID == one.ProductID).Select(p => new { n = p.s_RKDetail.Count() + p.s_SellDetail.Count() + p.s_Stock.Count() + p.t_ChangeStock.Count() });            if (more.FirstOrDefault().n == 0)            {              db.t_Product.Remove(one);              db.SaveChanges();            }            else MessageUtil.ShowWarning("此商品数据,已经关联库存记录,不能物理删除!但是可以修改为新商品数据,并使用。");          }          catch (Exception err)          {            MessageUtil.ShowError("此商品删除出错!可以修改为新商品数据,并使用。错误内容为:" + err.Message);          }        }        buttonX1_Click(null, null);      }    }

 

其实也就是查找此数据相关联的其它表行数,并相加,只要不为0,就说明有关联数据,不能删除。再给出提示即可。