如何使用代码生成器生成的代码对记录进行批量修改

通用权限管理系统提供了一套代码生成器,这里介绍少如何使用其中的记录批量修改功能,

方法一:

List<KeyValuePair<string, object>> whereParameters = new List<KeyValuePair<string, object>>(); 
whereParameters.Add(new KeyValuePair<string, object>(QUOTEntity.FieldSITE_ID, targetSiteId));
whereParameters.Add(new KeyValuePair<string, object>(QUOTEntity.FieldFEE_TYPE, targetFeeType));
List<QUOTEntity> priceList = QUOTManager.GetList<QUOTEntity>(whereParameters);
foreach (var PntEntity in priceList)
{
 PntEntity.DeletionStateCode = 1;
 PntEntity.ModifiedBy = userInfo.RealName;
 PntEntity.ModifiedOn = DateTime.Now;
 PntEntity.ModifiedUserId = userInfo.Id;
 QUOTManager.Update(PntEntity);
}

 以上方法需要找出全部记录,逐条更新,效率不是很好。

方法二:

List<KeyValuePair<string, object>> whereParameters = new List<KeyValuePair<string, object>>(); 
whereParameters.Add(new KeyValuePair<string, object>(QUOTEntity.FieldSITE_ID, targetSiteId));
whereParameters.Add(new KeyValuePair<string, object>(QUOTEntity.FieldFEE_TYPE, targetFeeType));
List<KeyValuePair<string, object>> parameters = new List<KeyValuePair<string, object>>();
parameters.Add(new KeyValuePair<string, object>(QUOTEntity.FieldDeletionStateCode, 1));
parameters.Add(new KeyValuePair<string, object>(QUOTEntity.FieldModifiedBy, userInfo.RealName));
parameters.Add(new KeyValuePair<string, object>(QUOTEntity.FieldModifiedOn, DateTime.Now));
parameters.Add(new KeyValuePair<string, object>(QUOTEntity.FieldModifiedUserId, userInfo.Id));
parameters.Add(new KeyValuePair<string, object>(QUOTEntity.FieldMODIFIEDSITE, userInfo.CompanyName));
QUOTManager.SetProperty(whereParameters, parameters); 

可以看到,上面代码使用了SetProperty方法,whereParameters是条件,parameters是参数,

表示将符合条件的记录设置对应的属性。效率要比第一条高。

关于第二种方法,我们来看下其实现

       public virtual int SetProperty(KeyValuePair<string, object> whereParameter, KeyValuePair<string, object> parameter)
        {
            List<KeyValuePair<string, object>> whereParameters = new List<KeyValuePair<string, object>>();
            whereParameters.Add(whereParameter);
            List<KeyValuePair<string, object>> parameters = new List<KeyValuePair<string, object>>();
            parameters.Add(parameter);
            return DbLogic.SetProperty(DbHelper, this.CurrentTableName, whereParameters, parameters);
        }
        /// <summary>
        /// 设置属性
        /// </summary>
        /// <param name="dbHelper">数据库连接</param>
        /// <param name="tableName">目标表名</param>
        /// <param name="whereParameters">条件字段,条件值</param>
        /// <param name="parameters">更新字段,更新值</param>
        /// <returns>影响行数</returns>
        public static int SetProperty(IDbHelper dbHelper, string tableName, List<KeyValuePair<string, object>> whereParameters, List<KeyValuePair<string, object>> parameters)
        {
            SQLBuilder sqlBuilder = new SQLBuilder(dbHelper);
            sqlBuilder.BeginUpdate(tableName);
            foreach (var parameter in parameters)
            {
                sqlBuilder.SetValue(parameter.Key, parameter.Value);
            }
            sqlBuilder.SetWhere(whereParameters);
            // sqlBuilder.SetDBNow(FieldModifiedOn);
            return sqlBuilder.EndUpdate();
        }

 

底层自动实现了条件和设置功能的拼接,满足外部多种调用方式。其底层实现所在位置:

 

 

感兴趣的朋友可继续看下其底层实现原理,自从使用第二种方式对记录批量更新后,后台处理速度确实提高了很多。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
NFine 是基于 C# 语言的极速 WEB + ORM 框架,其核心设计目标是开发迅速、代码量少、学习简单、功能强大、轻量级、易扩展,让Web开发更迅速、简单。能解决60%重复工作。为您节约更多时间,去陪恋人、家人和朋友。轻松开发,专注您的业务,从NFine开始。 简介: NFine是一套基于 ASP.NET MVC+EF6+Bootstrap 开发出来的框架,源代码完全开源,可以帮助你解决C#以及.NET 项目68%的重复工作,让开发人员远离加班。 使用 Apache License 2.0 协议,采用主流框架,容易上手,简单易学,学习成本低。可完全实现二次开发、基本满足80%项目需求。 可以帮助解决 .NET 项目70%的重复工作,让开发更多关注业务逻辑。既能快速提高开发效率,帮助公司节省人力成本,同时又不失灵活性。 支持 SQLServer、MySQL、Oracle、SQLite、Access 等多数据库类型。模块化设计,层次结构清晰。内置一系列企业信息管理的基础功能。 操作权限控制精密细致,对所有管理链接都进行权限验证,可控制到导航菜单、功能按钮。 数据权限(精细化数据权限控制,控制到行级,列表级,表单字段级,实现不同人看不同数据,不同人对同一个页面操作不同字段 提高开发效率及质量。常用类封装,日志、缓存、验证、字典、文件、邮件、,Excel。等等,目前兼容浏览器(IE8+、Chrome、Firefox、360浏览器等) 适用范围:可以开发 OA、ERP、BPM、CRM、WMS、TMS、MIS、BI、电商平台后台、物流管理系统、快递管理系统、教务管理系统等各类管理软件。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值