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;
相关文章
|
23天前
|
开发框架 搜索推荐 算法
一个包含了 50+ C#/.NET编程技巧实战练习教程
一个包含了 50+ C#/.NET编程技巧实战练习教程
85 18
|
23天前
|
缓存 算法 安全
精选10款C#/.NET开发必备类库(含使用教程),工作效率提升利器!
精选10款C#/.NET开发必备类库(含使用教程),工作效率提升利器!
62 12
|
21天前
|
开发框架 人工智能 .NET
C#/.NET/.NET Core拾遗补漏合集(24年12月更新)
C#/.NET/.NET Core拾遗补漏合集(24年12月更新)
|
21天前
|
开发框架 算法 .NET
C#/.NET/.NET Core技术前沿周刊 | 第 15 期(2024年11.25-11.30)
C#/.NET/.NET Core技术前沿周刊 | 第 15 期(2024年11.25-11.30)
|
21天前
|
开发框架 Cloud Native .NET
C#/.NET/.NET Core技术前沿周刊 | 第 16 期(2024年12.01-12.08)
C#/.NET/.NET Core技术前沿周刊 | 第 16 期(2024年12.01-12.08)
|
1月前
|
开发框架 监控 .NET
C#进阶-ASP.NET WebForms调用ASMX的WebService接口
通过本文的介绍,希望您能深入理解并掌握ASP.NET WebForms中调用ASMX WebService接口的方法和技巧,并在实际项目中灵活运用这些技术,提高开发效率和应用性能。
49 5
|
1月前
|
算法 Java 测试技术
Benchmark.NET:让 C# 测试程序性能变得既酷又简单
Benchmark.NET是一款专为 .NET 平台设计的性能基准测试框架,它可以帮助你测量代码的执行时间、内存使用情况等性能指标。它就像是你代码的 "健身教练",帮助你找到瓶颈,优化性能,让你的应用跑得更快、更稳!希望这个小教程能让你在追求高性能的路上越走越远,享受编程带来的无限乐趣!
119 13
|
2月前
|
数据库连接 数据库 C#
Windows下C# 通过ADO.NET方式连接南大通用GBase 8s数据库(上)
Windows下C# 通过ADO.NET方式连接南大通用GBase 8s数据库(上)
|
2月前
|
数据库连接 数据库 C#
Windows下C# 通过ADO.NET方式连接南大通用GBase 8s数据库(下)
本文接续前文,深入讲解了在Windows环境下使用C#和ADO.NET操作南大通用GBase 8s数据库的方法。通过Visual Studio 2022创建项目,添加GBase 8s的DLL引用,并提供了详细的C#代码示例,涵盖数据库连接、表的创建与修改、数据的增删查改等操作,旨在帮助开发者提高数据库管理效率。
|
2月前
|
人工智能 开发框架 安全
C#/.NET/.NET Core技术前沿周刊 | 第 13 期(2024年11.11-11.17)
C#/.NET/.NET Core技术前沿周刊 | 第 13 期(2024年11.11-11.17)

热门文章

最新文章