CSFrameworkV6 - Delete方法删除数据检查数据引用
作者:C/S框架网|www.csframewo  发布日期:2023/03/06 11:15:46
  CSFrameworkV6 - Delete方法删除数据检查数据引用

产品档案表定义了产品类别 CategoryId, 在删除产品类别前,后台检查是否有数据引用,被引用的数据不可删除,参考代码:

C# Code:

/// <summary>
/// 删除产品类别
/// </summary>
/// <param name="keyValue">主键</param>
/// <returns></returns>
public override bool Delete(string keyValue)
{
  
var obj = _Database.GetQueryable<dt_ProductCategory>().Where(w => w.isid == keyValue).FirstOrDefault();
  
if (obj != null)
  {
    
//检查数据引用
    
var isReference = _Database.GetQueryable<dt_Product>().Any(a => a.CategoryId == obj.CategoryCode);
    
if (isReference)
    
throw new BizException("当前记录不可删除,产品资料已使用!");
    
    
//删除
    
var result = _Database.Remove<dt_ProductCategory>(obj) > 0;
    
    
//数据日志
    
if (result) _Log.Log(DataLogType.delete, "删除资料", keyValue, _Loginer.Account, obj);
    
    
return result;
  }
  
else
  {
    
throw new BizException("主键 <" + keyValue + "> 不存在,删除失败!");
  }
}

//来源:C/S框架网 | www.csframework.com | QQ:23404761


界面提示:




数据项较多时如删除产品档案,参考:



C# Code:

/// <summary>
/// 检查数据引用
/// </summary>
/// <param name="productCode">产品编码</param>
/// <returns></returns>
private bool IsReference(string productCode)
{
  
if (_Database.GetQueryable<tb_BOMList>().Any(a => a.ProductCode == productCode)) return true;//BOM表
  
if (_Database.GetQueryable<tb_POs>().Any(a => a.ProductCode == productCode)) return true;//采购
  
if (_Database.GetQueryable<tb_SOs>().Any(a => a.StockCode == productCode)) return true;//销售
  
if (_Database.GetQueryable<tb_INs>().Any(a => a.ProductCode == productCode)) return true;//入仓
  
if (_Database.GetQueryable<tb_IOs>().Any(a => a.ProductCode == productCode)) return true;//出仓
  
if (_Database.GetQueryable<tb_YKs>().Any(a => a.ProductCode == productCode)) return true;//盘盈盘亏
  
if (_Database.GetQueryable<tb_ICs>().Any(a => a.ProductCode == productCode)) return true;//盘点
  
return false;
}


//来源:C/S框架网 | www.csframework.com | QQ:23404761






C/S框架网|原创精神.创造价值.打造精品


扫一扫加作者微信
C/S框架网作者微信 C/S框架网|原创作品.质量保障.竭诚为您服务
上一篇 下一篇