/// <summary>已重载。删除关联数据</summary> /// <returns></returns> protected override int OnDelete() { if (MenuButtons != null) { MenuButtons.Delete(); } return(base.OnDelete()); }
/// <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); }