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的热门话题分析
相关文章
|
存储 分布式计算 API
大数据-107 Flink 基本概述 适用场景 框架特点 核心组成 生态发展 处理模型 组件架构
大数据-107 Flink 基本概述 适用场景 框架特点 核心组成 生态发展 处理模型 组件架构
781 0
|
SQL 数据采集 分布式计算
【赵渝强老师】基于大数据组件的平台架构
本文介绍了大数据平台的总体架构及各层的功能。大数据平台架构分为五层:数据源层、数据采集层、大数据平台层、数据仓库层和应用层。其中,大数据平台层为核心,负责数据的存储和计算,支持离线和实时数据处理。数据仓库层则基于大数据平台构建数据模型,应用层则利用这些模型实现具体的应用场景。文中还提供了Lambda和Kappa架构的视频讲解。
1379 3
【赵渝强老师】基于大数据组件的平台架构
|
SQL 存储 分布式计算
大数据-157 Apache Kylin 背景 历程 特点 场景 架构 组件 详解
大数据-157 Apache Kylin 背景 历程 特点 场景 架构 组件 详解
336 9
|
存储 分布式计算 资源调度
两万字长文向你解密大数据组件 Hadoop
两万字长文向你解密大数据组件 Hadoop
722 11
|
消息中间件 监控 Java
大数据-109 Flink 体系结构 运行架构 ResourceManager JobManager 组件关系与原理剖析
大数据-109 Flink 体系结构 运行架构 ResourceManager JobManager 组件关系与原理剖析
316 1
|
SQL 缓存 大数据
C#高效处理大数据的批次处理,以及最好的数据库设计
C#高效处理大数据的批次处理,以及最好的数据库设计
628 0
|
SQL 分布式计算 大数据
【赵渝强老师】大数据生态圈中的组件
本文介绍了大数据体系架构中的主要组件,包括Hadoop、Spark和Flink生态圈中的数据存储、计算和分析组件。数据存储组件包括HDFS、HBase、Hive和Kafka;计算组件包括MapReduce、Spark Core、Flink DataSet、Spark Streaming和Flink DataStream;分析组件包括Hive、Spark SQL和Flink SQL。文中还提供了相关组件的详细介绍和视频讲解。
994 0
.NET 4.0下实现.NET4.5的Task类相似功能组件
【10月更文挑战第29天】在.NET 4.0 环境下,可以使用 `BackgroundWorker` 类来实现类似于 .NET 4.5 中 `Task` 类的功能。`BackgroundWorker` 允许在后台执行耗时操作,同时不会阻塞用户界面线程,并支持进度报告和取消操作。尽管它有一些局限性,如复杂的事件处理模型和不灵活的任务管理方式,但在某些情况下仍能有效替代 `Task` 类。
230 0
|
7月前
|
XML 前端开发 C#
C#编程实践:解析HTML文档并执行元素匹配
通过上述步骤,可以在C#中有效地解析HTML文档并执行元素匹配。HtmlAgilityPack提供了一个强大而灵活的工具集,可以处理各种HTML解析任务。
331 19
|
8月前
|
监控 算法 C#
C#与Halcon联合编程实现鼠标控制图像缩放、拖动及ROI绘制
C#与Halcon联合编程实现鼠标控制图像缩放、拖动及ROI绘制
1505 0