/// <summary>已重载。在事务保护范围内处理业务,位于Valid之后</summary> /// <returns></returns> protected override int OnUpdate() { Int32 result = base.OnUpdate(); String haveButtonIDs = ""; if (MenuButtons != null && MenuButtons.Count > 0) { foreach (var item in MenuButtons) { haveButtonIDs += item.ButtonID + ","; } //去除最后的逗号 haveButtonIDs = haveButtonIDs.TrimEnd(','); } //如果不相等说明按钮被修改了 if (haveButtonIDs != ButtonIDs) { //先删除后添加 if (MenuButtons != null && MenuButtons.Count > 0) { MenuButtons.Delete(); } if (!String.IsNullOrEmpty(ButtonIDs)) { Int32[] ss = ButtonIDs.SplitAsInt(","); if (ss != null && ss.Length > 0) { EntityList <MenuButton> list = new EntityList <MenuButton>(); foreach (Int32 buttonID in ss) { var m = new MenuButton(); m.ButtonID = buttonID; m.MenuID = ID; list.Add(m); } list.Insert(true); } } //如果只是更改了按钮菜单根不会重新设置,需要手动设置为null,否则扩展属性的缓存不会更新 Menu.Root = null; //这里还需要清空菜单的缓存,否则从缓存中重新读取数据时扩展属性还是旧的 Menu.Meta.Cache.Clear(String.Format("菜单{0}更新了菜单按钮", Name)); //Menu.Meta.Cache.Entities.Clear(); //MenuButton.Meta.Cache.Entities.Clear(); //Menu.Meta.Cache.Clear(String.Format("菜单{0}更新了菜单按钮",Name)); } return(result); }
///// <summary>已重载。基类先调用Valid(true)验证数据,然后在事务保护内调用OnInsert</summary> ///// <returns></returns> //public override Int32 Insert() //{ // Int32 result = base.Insert(); // if (!String.IsNullOrEmpty(ButtonIDs)) // { // Int32[] ss = ButtonIDs.SplitAsInt(","); // if (ss != null && ss.Length > 0) // { // EntityList<MenuButton> list = new EntityList<MenuButton>(); // foreach (Int32 buttonID in ss) // { // MenuButton m = new MenuButton(); // m.MenuID = ID; // m.ButtonID = buttonID; // list.Add(m); // } // throw new Exception("插入异常!"); // list.Insert(true); // } // } // return result; //} /// <summary>已重载。在事务保护范围内处理业务,位于Valid之后</summary> /// <returns></returns> protected override Int32 OnInsert() { Int32 result = base.OnInsert(); if (!String.IsNullOrEmpty(ButtonIDs)) { Int32[] ss = ButtonIDs.SplitAsInt(","); if (ss != null && ss.Length > 0) { EntityList <MenuButton> list = new EntityList <MenuButton>(); foreach (Int32 buttonID in ss) { MenuButton m = new MenuButton(); m.MenuID = ID; m.ButtonID = buttonID; list.Add(m); } list.Insert(true); } } return(result); }