private void LoadFromId(int mainSpecialExpId) { if (CachedEntityCommander.IsTypeRegistered(typeof(MainSpecialExpInfo))) { MainSpecialExpInfo mainSpecialExpInfo=Find(GetList(), mainSpecialExpId); if(mainSpecialExpInfo==null) throw new AppException("未能在缓存中找到相应的键值对象"); Copy(mainSpecialExpInfo, this); } else { MainSpecialExp mainSpecialExp=new MainSpecialExp( mainSpecialExpId); if(mainSpecialExp.IsNew) throw new AppException("尚未初始化"); LoadFromDAL(this, mainSpecialExp); } }
//从后台获取数据 internal static void LoadFromDAL(MainSpecialExpInfo pMainSpecialExpInfo, MainSpecialExp pMainSpecialExp) { pMainSpecialExpInfo.mainSpecialExpId = pMainSpecialExp.MainSpecialExpId; pMainSpecialExpInfo.mainSpecialExpName = pMainSpecialExp.MainSpecialExpName; pMainSpecialExpInfo.Loaded=true; }
//数据持久化 internal static void SaveToDb(MainSpecialExpInfo pMainSpecialExpInfo, MainSpecialExp pMainSpecialExp,bool pIsNew) { pMainSpecialExp.MainSpecialExpId = pMainSpecialExpInfo.mainSpecialExpId; pMainSpecialExp.MainSpecialExpName = pMainSpecialExpInfo.mainSpecialExpName; pMainSpecialExp.IsNew=pIsNew; string UserName = SubsonicHelper.GetUserName(); try { pMainSpecialExp.Save(UserName); } catch(Exception ex) { LogManager.getInstance().getLogger(typeof(MainSpecialExpInfo)).Error(ex); if(ex.Message.Contains("插入重复键"))//违反了唯一键 { throw new AppException("此对象已经存在");//此处等待优化可以从唯一约束中直接取出提示来,如果没有的话,默认为原始的出错提示 } throw new AppException("保存失败"); } pMainSpecialExpInfo.mainSpecialExpId = pMainSpecialExp.MainSpecialExpId; //如果缓存存在,更新缓存 if (CachedEntityCommander.IsTypeRegistered(typeof(MainSpecialExpInfo))) { ResetCache(); } }
/// <summary> /// 保存 /// </summary> public override void Save() { if(!m_Loaded)//新增 { MainSpecialExp mainSpecialExp=new MainSpecialExp(); SaveToDb(this, mainSpecialExp,true); } else//修改 { MainSpecialExp mainSpecialExp=new MainSpecialExp(mainSpecialExpId); if(mainSpecialExp.IsNew) throw new AppException("该数据已经不存在了"); SaveToDb(this, mainSpecialExp,false); } }