CSFrameworkV6 - 基础资料窗体 - 扩展Update方法保存多个表
作者:C/S框架网|www.csframewo  发布日期:2023/03/06 12:44:32
  CSFrameworkV6 - 基础资料窗体 - 扩展Update方法保存多个表




Form代码


C# Code:

//明细表数据源
var detail = gcDetail.DataSource as List<dt_DocRef>;
var result = _BLL.Update(_BLL.DataBinder, detail);//更新主表和明细
if (result)
{
}

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




DAL层代码



C# Code:


/// <summary>
/// 基础资料窗体保存扩展方法演示
/// </summary>
/// <param name="master">主表</param>
/// <param name="detail">明细表</param>
/// <returns></returns>
public bool Update(dt_Doc master, List<dt_DocRef> detail)
{
  
var q1 = _Database.GetQueryable<dt_Doc>();
  
var q2 = _Database.GetQueryable<dt_DocRef>();
  
  
//查询主键是否存在,不存在既为新增!
  
var isAdd = master.isid.IsEmpty() || (!q1.Any(a => a.isid == master.isid));
  
if (isAdd)
  {
    master.isid
= IdHelper.GetId();
    master.DocNo
= DocNoHelper.GetDataSN(_Database, "DC", true, 6);//生成序号
    
}
    
    
//设置明细表外键
    
foreach (var d in detail)
    {
      
if (d.DocNo.IsEmpty()) d.DocNo = master.DocNo;
    }
    
    
//事务
    
return _Database.RunTransaction(() =>
    {
      
//保存主表
      
if (isAdd)
      _Database.Add(master);
      
else
      _Database.Update(master);
      
      
//先删除明细表
      
_Database.Remove<dt_DocRef>(w => w.DocNo == master.DocNo);
      
      
//保存明细表
      
_Database.Add(detail);
      });
      
    }
    
    
//来源:C/S框架网 | www.csframework.com | QQ:23404761





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


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