C#.NET 大型通用信息化系统集成快速开发平台 4.1 版本 - 主细表事务处理的标准例子
2014-02-25 12:30 通用C#系统架构 阅读(2436) 评论(2) 编辑 收藏 举报要么就一次全成功,要么就一次全失败,插入主表的同时插入关联的子表,主表插入时返回当前插入的主键,字表插入时用这个主键做关联。
参考代码如下:
/// <summary> /// 添加角色(同时添加用户,一个数据库事务里进行处理) /// </summary> /// <param name="userInfo">用户</param> /// <param name="entity">实体</param> /// <param name="userIds">用户主键数组</param> /// <param name="statusCode">返回状态码</param> /// <param name="statusMessage">返回状态信息</param> /// <returns>主键</returns> public string AddWithUser(BaseUserInfo userInfo, BaseRoleEntity entity, string[] userIds, out string statusCode, out string statusMessage) { var parameter = ServiceParameter.CreateWithMessage(userInfo , MethodBase.GetCurrentMethod() , this.serviceName , AppMessage.RoleService_Add); string result = string.Empty; string returnCode = string.Empty; string returnMessage = string.Empty; ServiceUtil.ProcessUserCenterWriteDbWithTransaction(userInfo, parameter, (dbHelper) => { // 这里是判断已经登录的用户是否有调用当前函数的权限,加强服务层被远程调用的安全性的 var permissionManager = new BasePermissionManager(userInfo); if (permissionManager.CheckPermissionByUser(userInfo.Id, "RoleAdmin.Add", "添加角色")) { string tableName = userInfo.SystemCode + "Role"; var manager = new BaseRoleManager(dbHelper, userInfo, tableName); result = manager.Add(entity, out returnCode); if (!string.IsNullOrEmpty(result) && userIds != null && userIds.Length > 0) { tableName = userInfo.SystemCode + "UserRole"; var userManager = new BaseUserManager(dbHelper, userInfo, tableName); // 小心异常,检查一下参数的有效性 if (userIds != null) { userManager.AddToRole(userIds, result); } } returnMessage = manager.GetStateMessage(returnCode); } }); statusCode = returnCode; statusMessage = returnMessage; return result; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
2011-02-25 C#.NET通用管理系统后台管理组件中选择组织机构选择功能增加默认选择内部组织机构的功能
2011-02-25 组织机构管理里只有“内部组织”会出现在即时通讯的目录树里(可供C#.NET源码下载学习)