Dapper的批量更新操作

该代码段展示了如何通过连接Oracle数据库,执行SQL查询来获取元素名称的数据,并利用List批量更新以提高性能。它涉及了组件名称的匹配、标准值设置以及异常处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

放到列表里面可以提高更新性能

//获取模型所需元素名称及顺序,从中拿到成分名称、成分初始值、成分内控标准,并计算出成分偏差,写入到表ElementName
public void GetCompentName(string sampleNo,string steelName)
{
    try
    {
        using IDbConnection dbConnection = new OracleConnection(str_Conn_AusinL2);
        dbConnection.Open();
        const int maxElementId = 100;//元素位置超过此值则不进入运算
        string sqlStr_CompName = $"SELECT * From TB_MODE2_MAIN1_ELEMENTNAME WHERE ID < {maxElementId} ORDER BY ID ASC";
        string sqlStr_LabSubNew = $"SELECT * From TB_PLC6_DB3_LABSUB WHERE SAMPLE_NO = {sampleNo}";
        string sqlStr_LabStandard = $"SELECT * From TB_MODE2_MAIN3_NORMLIZE WHERE STEELNAME = {steelName}";
        var varData_CompName = dbConnection.Query<TbModel2Main1ElementName>(sqlStr_CompName).ToList();
        var varData_LabSubNewData = dbConnection.Query<TbPlc6DB3LabSub>(sqlStr_LabSubNew).ToList();
        var varData_LabStandard = dbConnection.Query<TbModel2Main3Normlize>(sqlStr_LabStandard).ToList();
        // 创建一个集合用于批量更新
        List<TbModel2Main1ElementName> updatedElementNames = new List<TbModel2Main1ElementName>();
        //将新成分分别写入ElementName表的InitialValue中
        foreach (var itemCompName in varData_CompName)
        {
            var matchingLabSubNew = varData_LabSubNewData.FirstOrDefault(x => x.Name.Trim().ToUpper() == itemCompName.Name.Trim().ToUpper());
            var matchingLabStandard = varData_LabStandard.FirstOrDefault(x => x.ElementName.Trim().ToUpper() == itemCompName.Name.Trim().ToUpper());
            if (matchingLabSubNew != null && matchingLabStandard != null)
            {
                itemCompName.InitialValue = matchingLabSubNew.Value;
                itemCompName.StandardMax = matchingLabStandard.StandardMax; 
                itemCompName.StandardMin = matchingLabStandard.StandardMin;
                itemCompName.ErrMax = itemCompName.StandardMax - itemCompName.InitialValue;
                itemCompName.ErrMin = itemCompName.InitialValue - itemCompName.StandardMin;
                updatedElementNames.Add(itemCompName);
               
            }
        }
        // 批量更新TB_MODE2_MAIN1_ELEMENTNAME表中的InitialValue字段,通过list提升性能
        string sqlUpdate = $"UPDATE TB_MODE2_MAIN1_ELEMENTNAME SET InitialValue = :InitialValue WHERE id = :ID";
        dbConnection.Execute(sqlUpdate, updatedElementNames);
    }
    catch (Exception ex)
    {

        AppLog.Info("GetCompentName()出错,信息为: " + ex.Message);
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AAA_li

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值