/// <summary> /// 新增模块。 /// </summary> /// <param name="dto">待新增模块的信息。</param> /// <returns>新模块的Id。(-2:Tag重复。)</returns> public static string InsertModule(ModuleDTO dto) { Module existingM = GetModuleByTag(dto.Tag); if (existingM != null) { return("-2"); } Db.SessionFactory.EvictQueries("Module"); //模块基本信息。 Module m = new Module(); m.Id = IdGen.GetNextId(typeof(Module)); m.Tag = dto.Tag; m.Name = dto.Name; m.Remark = dto.Remark; m.OrderId = dto.OrderId; m.ModuleUrl = dto.ModuleUrl; m.Disabled = dto.Disabled; //模块分类。 ModuleType mt = Db.Session.Load(typeof(ModuleType), dto.ModuleTypeId) as ModuleType; mt.AddModule(m); //获取新增模块权限的主键值。 string[] Ids = null; if (dto.ModuleRights.Count > 0) { Ids = IdGen.GetNextId(typeof(ModuleRight), dto.ModuleRights.Count); } //向数据库保存模块和模块权限。 ITransaction transaction = Db.Session.BeginTransaction(); try { Db.Session.Save(m); for (int i = 0; i < dto.ModuleRights.Count; i++) { ModuleRight mr = new ModuleRight(); mr.Id = Ids[i]; mr.RightTag = dto.ModuleRights[i].ToString(); m.AddModuleRight(mr); Db.Session.Save(mr); } transaction.Commit(); } catch { transaction.Rollback(); throw; } //返回新模块的Id。 return(m.Id); }