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

本文涉及的产品
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
简介:

程序的运行效果如下:

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的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps&nbsp;
相关文章
|
17天前
|
存储 分布式计算 数据挖掘
数据架构 ODPS 是什么?
数据架构 ODPS 是什么?
133 7
|
17天前
|
存储 分布式计算 大数据
大数据 优化数据读取
【11月更文挑战第4天】
32 2
|
17天前
|
Java 物联网 C#
C#/.NET/.NET Core学习路线集合,学习不迷路!
C#/.NET/.NET Core学习路线集合,学习不迷路!
|
21天前
|
SQL 数据采集 分布式计算
【赵渝强老师】基于大数据组件的平台架构
本文介绍了大数据平台的总体架构及各层的功能。大数据平台架构分为五层:数据源层、数据采集层、大数据平台层、数据仓库层和应用层。其中,大数据平台层为核心,负责数据的存储和计算,支持离线和实时数据处理。数据仓库层则基于大数据平台构建数据模型,应用层则利用这些模型实现具体的应用场景。文中还提供了Lambda和Kappa架构的视频讲解。
【赵渝强老师】基于大数据组件的平台架构
|
14天前
|
存储 大数据 数据管理
大数据分区简化数据维护
大数据分区简化数据维护
24 4
|
20天前
|
Java 物联网 编译器
C#一分钟浅谈:.NET Core 与 .NET 5 区别
本文对比了 .NET Core 和 .NET 5,从历史背景、主要区别、常见问题及易错点等方面进行了详细分析。.NET Core 侧重跨平台支持和高性能,而 .NET 5 在此基础上统一了 .NET 生态系统,增加了更多新特性和优化。开发者可根据具体需求选择合适的版本。
42 7
|
17天前
|
人工智能 开发框架 前端开发
C#/.NET/.NET Core技术前沿周刊 | 第 12 期(2024年11.01-11.10)
C#/.NET/.NET Core技术前沿周刊 | 第 12 期(2024年11.01-11.10)
|
17天前
|
开发框架 网络协议 .NET
C#/.NET/.NET Core优秀项目和框架2024年10月简报
C#/.NET/.NET Core优秀项目和框架2024年10月简报
|
24天前
|
存储 大数据 定位技术
大数据 数据索引技术
【10月更文挑战第26天】
50 3
|
24天前
|
存储 大数据 OLAP
大数据数据分区技术
【10月更文挑战第26天】
58 2