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(); } }
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); }