private void InitRoleWebMenu(AfxContext db)
 {
     using (db.BeginTransaction(IsolationLevel.ReadCommitted))
     {
         foreach (var kv in RoleWebMenuList)
         {
             foreach (var webmenuId in kv.Value)
             {
                 var m = db.RoleWebMenu.Where(q => q.RoleId == kv.Key && q.WebMenuId == webmenuId).FirstOrDefault();
                 if (m == null)
                 {
                     m = new RoleWebMenu()
                     {
                         Id        = this.GetIdentity <RoleWebMenu>(),
                         RoleId    = kv.Key,
                         WebMenuId = webmenuId
                     };
                     db.RoleWebMenu.Add(m);
                     db.SaveChanges();
                 }
             }
             db.AddCommitCallback((num) =>
             {
                 using (var cache = IocUtils.Get <IRoleWebMenuCache>())
                 {
                     cache.Remove(kv.Key);
                 }
             });
         }
         db.Commit();
     }
 }
コード例 #2
0
        public virtual int Update(string roleId, List <string> addWebMenuIdList, List <string> delWebMenuIdList)
        {
            int count = 0;

            using (var db = this.GetContext())
            {
                using (db.BeginTransaction(IsolationLevel.ReadCommitted))
                {
                    if (addWebMenuIdList != null && addWebMenuIdList.Count > 0)
                    {
                        var idqueue = new Queue <string>(this.GetIdentityList <RoleWebMenu>(addWebMenuIdList.Count));
                        foreach (var webMenuId in addWebMenuIdList)
                        {
                            var m = new RoleWebMenu()
                            {
                                Id        = idqueue.Dequeue(),
                                RoleId    = roleId,
                                WebMenuId = webMenuId
                            };
                            db.RoleWebMenu.Add(m);
                        }
                    }
                    if (delWebMenuIdList != null && delWebMenuIdList.Count > 0)
                    {
                        foreach (var webMenuId in delWebMenuIdList)
                        {
                            var m = db.RoleWebMenu.Where(q => q.RoleId == roleId && q.WebMenuId == webMenuId).FirstOrDefault();
                            if (m != null)
                            {
                                db.RoleWebMenu.Remove(m);
                            }
                        }
                    }
                    db.AddCommitCallback((num) => this.cache.Remove(roleId));
                    count += db.SaveChanges();
                    db.Commit();
                }
            }

            return(count);
        }