You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#中BaseDAL子类继承优化:移除存储过程名变量传递方案

解决方案

核心思路是为每个数据库操作定义专属的抽象存储过程名称属性,让子类实现这些属性来提供对应操作的存储过程名,替代原来的可变实例变量zProceduceName,避免多方法调用时的变量覆盖问题,同时让代码逻辑更清晰。

修改后的BaseDAL代码

// 定义每个操作对应的抽象存储过程名称属性,子类必须实现
protected abstract string LoadProcedureName { get; }
protected abstract string InsertProcedureName { get; }
protected abstract string UpdateProcedureName { get; }
protected abstract string DeleteProcedureName { get; }

public virtual async Task<DataTable> loadDataAsync()
{
    return await DataProvider.Instance.executeQueryAsync(LoadProcedureName);
}

public virtual async Task insertAsync(string pzName, string pzAddress, string pzEmail, string pzPhone, CancellationToken pCt)
{
    await DataProvider.Instance.executeNonQueryAsync(InsertProcedureName, pCt, new object[] { pzName, pzAddress, pzEmail, pzPhone });
}

public virtual async Task updateAsync(int pnID, string pzName, string pzAddress, string pzEmail, string pzPhone, CancellationToken pCt)
{
    await DataProvider.Instance.executeNonQueryAsync(UpdateProcedureName, pCt, new object[] { pnID, pzName, pzAddress, pzEmail, pzPhone });
}

public virtual async Task deleteAsync(int pnID, CancellationToken pCt)
{
    await DataProvider.Instance.executeNonQueryAsync(DeleteProcedureName, pCt, new object[] { pnID });
}

修改后的AuthorDAL代码

// 直接实现父类的抽象属性,提供每个操作对应的存储过程名
protected override string LoadProcedureName => "dbo.LoadAuthor";
protected override string InsertProcedureName => "dbo.InsertAuthor @name , @address , @email , @phone";
protected override string UpdateProcedureName => "dbo.UpdateAuthor @id , @name , @address , @email , @phone";
protected override string DeleteProcedureName => "dbo.DeleteAuthor @id"; // 补充对应删除操作的存储过程名

// 无需重写父类方法,直接复用父类逻辑即可
// 若有特殊业务逻辑,再针对性重写对应方法

改动优势

  1. 解决线程安全问题:原zProceduceName是实例变量,多线程同时调用不同方法时会被覆盖,导致存储过程名错误。现在每个操作使用独立的只读属性,不存在变量覆盖风险。
  2. 简化代码维护:子类只需一次性定义所有操作的存储过程名,无需在每个方法里重复设置变量,也删除了原代码中冗余的重复执行逻辑。
  3. 逻辑更直观:每个操作对应的存储过程名一目了然,后续修改或扩展更便捷。

内容的提问来源于stack exchange,提问作者QuangGiap

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 04:24:25