C#.NET 权限管理系统组件 - 大数据只获取更新部分数据列的标准例子

简介:

程序的运行效果如下:

1:获取时,只获取需要的列,不需要的列不获取,主要原因是:因为数据量大获取所有的列传输的数据量大,有些敏感数据未必需要都传输在网络上,其次是更新数据时的版本问题尽量避免,你也在改他也在改,隐藏的数据列也更新了,并不是很好甚至可能引起一些没必要的错误。

 

        #region public DataTable GetAddressDataTableByPage(BaseUserInfo userInfo, string organizeId, string searchValue, out int recordCount, int pageIndex = 0, int pageSize = 100, string sort = null)
        /// <summary>
        /// 获取内部通讯录         /// </summary>
        /// <param name="userInfo">用户</param>
        /// <param name="organizeId">组织机构主键</param>
        /// <param name="search">查询内容</param>
        /// <param name="pageSize">分页的条数</param>
        /// <param name="pageIndex">当前页数</param>
        /// <returns>数据表</returns>
        public DataTable GetAddressDataTableByPage(BaseUserInfo userInfo, string organizeId, string searchValue, out int recordCount, int pageIndex = 0, int pageSize = 100, string sort = null)         {             // 写入调试信息
            #if (DEBUG)
                int milliStart = BaseBusinessLogic.StartDebug(userInfo, MethodBase.GetCurrentMethod());             #endif

            // 加强安全验证防止未授权匿名调用
            #if (!DEBUG)                 LogOnService.UserIsLogOn(userInfo);             #endif              DataTable dataTable = new DataTable(BaseStaffEntity.TableName);             using (IDbHelper dbHelper = DbHelperFactory.GetHelper(BaseSystemInfo.UserCenterDbType))             {                 try                 {                     dbHelper.Open(UserCenterDbConnection);                     // 这里是不获取所有的列,只获取自己需要的列的标准方法
                    BaseStaffManager staffManager = new BaseStaffManager(dbHelper, userInfo);                     staffManager.SelectField = "Id, RealName, DepartmentName, DutyName, OfficePhone, Mobile, ShortNumber, Email, OICQ, Description";                     dataTable = staffManager.GetAddressDataTableByPage(organizeId, searchValue, out recordCount, pageSize, pageIndex, sort);                     dataTable.TableName = BaseStaffEntity.TableName;                     BaseLogManager.Instance.Add(dbHelper, userInfo, this.serviceName, AppMessage.StaffService_GetAddressPageDT, MethodBase.GetCurrentMethod());                 }                 catch (Exception ex)                 {                     BaseExceptionManager.LogException(dbHelper, userInfo, ex);                     throw;                 }                 finally                 {                     dbHelper.Close();                 }             }              // 写入调试信息
            #if (DEBUG)                 BaseBusinessLogic.EndDebug(MethodBase.GetCurrentMethod(), milliStart);             #endif
            return dataTable;         }         #endregion

2:更新时,只更新数据有变化的记录,没有变化的记录不进行更新。

        #region private void BatchSave() 批量保存
        /// <summary>
        /// 批量保存         /// </summary>
        private void BatchSave()         {             // 去掉未修改的数据,提高运行速度
            for (int i = this.DTStaff.Rows.Count - 1; i >= 0; i--)             {                 if (this.DTStaff.Rows[i].RowState == DataRowState.Unchanged)                 {                     this.DTStaff.Rows.RemoveAt(i);                 }             }             DotNetService.Instance.StaffService.BatchUpdateAddress(this.UserInfo, this.DTStaff);             this.Search();             if (BaseSystemInfo.ShowInformation)             {                 // 批量保存,进行提示
                MessageBox.Show(AppMessage.MSG0012, AppMessage.MSG0000, MessageBoxButtons.OK, MessageBoxIcon.Information);             }         }         #endregion

 

        /// <summary>
        /// 批量更新通讯地址         /// </summary>
        /// <param name="userInfo">用户</param>
        /// <param name="dtStaff">数据表</param>
        /// <returns>影响行数</returns>
        public int BatchUpdateAddress(BaseUserInfo userInfo, DataTable dtStaff)         {             // 写入调试信息
            #if (DEBUG)
                int milliStart = BaseBusinessLogic.StartDebug(userInfo, MethodBase.GetCurrentMethod());             #endif

            // 加强安全验证防止未授权匿名调用
            #if (!DEBUG)                 LogOnService.UserIsLogOn(userInfo);             #endif

            int returnValue = 0;             using (IDbHelper dbHelper = DbHelperFactory.GetHelper(BaseSystemInfo.UserCenterDbType))             {                 try                 {                     dbHelper.Open(UserCenterDbConnection);                     // 这里是只更新部分字段的例子
                    foreach (DataRow dr in dtStaff.Rows)                     {                         SQLBuilder sqlBuilder = new SQLBuilder(dbHelper);                         sqlBuilder.BeginUpdate(BaseStaffEntity.TableName);                         // 这里是界面上显示的字段,需要更新的字段
                        sqlBuilder.SetValue(BaseStaffEntity.FieldOfficePhone, dr[BaseStaffEntity.FieldOfficePhone].ToString());                         sqlBuilder.SetValue(BaseStaffEntity.FieldMobile, dr[BaseStaffEntity.FieldMobile].ToString());                         sqlBuilder.SetValue(BaseStaffEntity.FieldShortNumber, dr[BaseStaffEntity.FieldShortNumber].ToString());                         sqlBuilder.SetValue(BaseStaffEntity.FieldEmail, dr[BaseStaffEntity.FieldEmail].ToString());                         sqlBuilder.SetValue(BaseStaffEntity.FieldOICQ, dr[BaseStaffEntity.FieldOICQ].ToString());                         sqlBuilder.SetValue(BaseStaffEntity.FieldDescription, dr[BaseStaffEntity.FieldDescription].ToString());                         sqlBuilder.SetWhere(BaseStaffEntity.FieldId, dr[BaseStaffEntity.FieldId].ToString());                         returnValue += sqlBuilder.EndUpdate();                     }                     BaseLogManager.Instance.Add(dbHelper, userInfo, this.serviceName, AppMessage.StaffService_BatchUpdateAddress, MethodBase.GetCurrentMethod());                 }                 catch (Exception ex)                 {                     BaseExceptionManager.LogException(dbHelper, userInfo, ex);                     throw;                 }                 finally                 {                     dbHelper.Close();                 }             }              // 写入调试信息
            #if (DEBUG)                 BaseBusinessLogic.EndDebug(MethodBase.GetCurrentMethod(), milliStart);             #endif

            return returnValue;         }

希望能对需要的人起点儿参考作用。




本文转自 jirigala 51CTO博客,原文链接:http://blog.51cto.com/2347979/1188404,如需转载请自行联系原作者

相关实践学习
基于MaxCompute的热门话题分析
Apsara Clouder大数据专项技能认证配套课程:基于MaxCompute的热门话题分析
相关文章
|
7月前
|
机器学习/深度学习 传感器 分布式计算
数据才是真救命的:聊聊如何用大数据提升灾难预警的精准度
数据才是真救命的:聊聊如何用大数据提升灾难预警的精准度
503 14
|
9月前
|
数据采集 分布式计算 DataWorks
ODPS在某公共数据项目上的实践
本项目基于公共数据定义及ODPS与DataWorks技术,构建一体化智能化数据平台,涵盖数据目录、归集、治理、共享与开放六大目标。通过十大子系统实现全流程管理,强化数据安全与流通,提升业务效率与决策能力,助力数字化改革。
334 4
|
9月前
|
分布式计算 DataWorks 数据处理
在数据浪潮中前行:记录一次我与ODPS的实践、思考与展望
本文详细介绍了在 AI 时代背景下,如何利用阿里云 ODPS 平台(尤其是 MaxCompute)进行分布式多模态数据处理的实践过程。内容涵盖技术架构解析、完整操作流程、实际部署步骤以及未来发展方向,同时结合 CSDN 博文深入探讨了多模态数据处理的技术挑战与创新路径,为企业提供高效、低成本的大规模数据处理方案。
434 3
|
9月前
|
SQL 人工智能 分布式计算
ODPS:数据浪潮中的成长与突围
本文讲述了作者在大数据浪潮中,通过引入阿里云ODPS体系(包括MaxCompute、DataWorks、Hologres)解决数据处理瓶颈、实现业务突破与个人成长的故事。从被海量数据困扰到构建“离线+实时”数据架构,ODPS不仅提升了数据处理效率,更推动了技术能力与业务影响力的双重跃迁。
|
8月前
|
机器学习/深度学习 运维 监控
运维不怕事多,就怕没数据——用大数据喂饱你的运维策略
运维不怕事多,就怕没数据——用大数据喂饱你的运维策略
673 0
|
7月前
|
传感器 人工智能 监控
数据下田,庄稼不“瞎种”——聊聊大数据如何帮农业提效
数据下田,庄稼不“瞎种”——聊聊大数据如何帮农业提效
240 14
|
9月前
|
SQL 人工智能 分布式计算
在数据浪潮中前行:我与ODPS的实践、思考与展望
在数据驱动决策的时代,企业如何高效处理海量数据成为数字化转型关键。本文结合作者实践,深入解析阿里云自研大数据平台 ODPS 的技术优势与应用场景,涵盖 MaxCompute、DataWorks、Hologres 等核心产品,分享从数据治理到实时分析的落地经验,并展望其在 AI 与向量数据时代的发展前景。
357 70
|
7月前
|
机器学习/深度学习 传感器 监控
吃得安心靠数据?聊聊用大数据盯紧咱们的餐桌安全
吃得安心靠数据?聊聊用大数据盯紧咱们的餐桌安全
237 1
|
7月前
|
数据采集 自动驾驶 机器人
数据喂得好,机器人才能学得快:大数据对智能机器人训练的真正影响
数据喂得好,机器人才能学得快:大数据对智能机器人训练的真正影响
687 1
|
6月前
|
传感器 人工智能 监控
拔俗多模态跨尺度大数据AI分析平台:让复杂数据“开口说话”的智能引擎
在数字化时代,多模态跨尺度大数据AI分析平台应运而生,打破数据孤岛,融合图像、文本、视频等多源信息,贯通微观与宏观尺度,实现智能诊断、预测与决策,广泛应用于医疗、制造、金融等领域,推动AI从“看懂”到“会思考”的跃迁。
554 0