设计

某天,这个关系错综复杂的表格修改,让我感到困扰。
代码大概是:using 一个事务,事务里 放着七八个表格的修改。表格之间的数据相互关联。
这里写图片描述

改一改 结果如下:

        /// <summary>
        /// 需要传递的共享数据
        /// </summary>
        private class ShareAddUserModel
        {          
            public LoginNameUser LoginUser { get; set; }
            public Users User { get; set; }
            public int RefType { get; set; }
        }

        private void UserAdd(ShareAddUserModel shareModel)
        {
            int refType = shareModel.LoginUser.RefType.ToInt(-1);

            var usersBO = ServiceLocator.GetService<IUsersBO>();
            Users user = new Users(); var userCount = usersBO.GetSingle(o => o.LoginName == shareModel.LoginUser.LoginName);
            if (userCount != null)
            {
                user.ID = userCount.ID;
            }
            else
            {
                var pwd = "";
                pwd = DESEncrypt.Encrypt(shareModel.LoginUser.PassWord);


                user.LoginName = shareModel.LoginUser.LoginName;
                user.PassWord = pwd;
                user.NickName = shareModel.LoginUser.ContactsName;
                user.Mobile = shareModel.LoginUser.Tel;
                user.Fax = shareModel.LoginUser.Fax;
                user.UserType = refType < 4 ? 5 : 6;
                usersBO.Add(user);
            }

            //加入需要共享的数据
            shareModel.User = user;
            shareModel.RefType = refType;
            //调用下个方法
            R_Users_RoleAdd(shareModel);
        }

        private void R_Users_RoleAdd(ShareAddUserModel shareModel)
        {
            var r_users_roleBO = ServiceLocator.GetService<IR_Users_RoleBO>();
            if (r_users_roleBO.GetSingle(o => o.UserID == shareModel.User.ID) != null)
            {
                throw new Exception("一个用户对应了多个角色");
            }
            R_Users_Role r_users_role = new R_Users_Role()
            {
                UserID = shareModel.User.ID,
                RoleID = shareModel.RefType < 2 ? Com.WELLS.Framework.Entities.EnumExt.RoleEnum.Customer : (shareModel.RefType < 4 ? Com.WELLS.Framework.Entities.EnumExt.RoleEnum.contractClient : Com.WELLS.Framework.Entities.EnumExt.RoleEnum.contractConsignor)
            };
            r_users_roleBO.Add(r_users_role);

            //加入共享数据

            //调用下个方法
        }

事务里面的代码如下:

 TransactionOptions option = new TransactionOptions { IsolationLevel = IsolationLevel.ReadCommitted };
            using (TransactionScope trans = new TransactionScope(scopeOption: TransactionScopeOption.Required, transactionOptions: option, interopOption: EnterpriseServicesInteropOption.None))
            {                
                        ShareAddUserModel shareModel = new ShareAddUserModel { LoginUser = UserLoginName };
                        UserAdd(shareModel);       
            }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值