/// <summary> /// 得到缺省的设置 /// </summary> /// <param name="userID"></param> /// <returns></returns> public static UserRecentData GetDefaultSettings(string userID) { userID.CheckStringIsNullOrEmpty("userID"); UserRecentData settings = new UserRecentData(); settings.UserID = userID; settings.InitFromConfiguration(); return(settings); }
/// <summary> /// 载入用户的最近数据 /// </summary> /// <param name="userID"></param> /// <returns></returns> public static UserRecentData LoadSettings(string userID) { UserRecentData settings = GetDefaultSettings(userID); UserRecentData settingsFromDB = LoadFromDB(userID); if (settingsFromDB != null) { settings.ImportProperties(settingsFromDB); } return(settings); }
/// <summary> /// 导入别的UserSettings的属性值,如果类别或属性名称不存在,则忽略 /// </summary> /// <param name="srcSettings"></param> private void ImportProperties(UserRecentData srcSettings) { foreach (UserRecentDataCategory category in this.Categories) { if (srcSettings.Categories.ContainsKey(category.Name)) { UserRecentDataCategory srcCategory = srcSettings.Categories[category.Name]; if (srcCategory != null) { category.ImportValues(srcCategory); } } } }
/// <summary> /// 根据用户ID获取指定的配置 /// </summary> /// <param name="userID"></param> /// <returns></returns> public static UserRecentData GetSettings(string userID) { userID.CheckStringIsNullOrEmpty("userID"); UserRecentData result = UserRecentDataCache.Instance.GetOrAddNewValue(userID, (cache, key) => { UserRecentData settings = LoadSettings(userID); MixedDependency mixedDependency = new MixedDependency( new UdpNotifierCacheDependency(), new UserRecentDataCacheItemDependency(), new MemoryMappedFileNotifierCacheDependency()); cache.Add(key, settings, mixedDependency); return(settings); }); return(result); }
/// <summary> /// 从数据库中加载 /// </summary> /// <param name="userID"></param> /// <returns></returns> private static UserRecentData LoadFromDB(string userID) { string sql = string.Format("SELECT CATEGORY,DATA FROM USER_RECENT_DATA WHERE USER_ID = {0}", TSqlBuilder.Instance.CheckQuotationMark(userID, true)); UserRecentData result = new UserRecentData() { UserID = userID }; result.InitFromConfiguration(); using (DbContext dbi = DbContext.GetContext(ConnectionDefine.UserRelativeInfoConnectionName)) { Database db = DatabaseFactory.Create(dbi); using (var dr = db.ExecuteReader(System.Data.CommandType.Text, sql)) { while (dr.Read()) { var catDataString = dr.GetString(1); if (catDataString != null) { XElementFormatter formatter = new XElementFormatter(); formatter.OutputShortType = false; XElement root = XElement.Parse(catDataString); var loadedCatData = (UserRecentDataCategory)formatter.Deserialize(root); result.Categories[(string)dr.GetString(0)].ImportValues(loadedCatData); } } } } return(result); }
/// <summary> /// 导入别的UserSettings的属性值,如果类别或属性名称不存在,则忽略 /// </summary> /// <param name="srcSettings"></param> private void ImportProperties(UserRecentData srcSettings) { foreach (UserRecentDataCategory category in this.Categories) { if (srcSettings.Categories.ContainsKey(category.Name)) { UserRecentDataCategory srcCategory = srcSettings.Categories[category.Name]; if (srcCategory != null) category.ImportValues(srcCategory); } } }
/// <summary> /// 从数据库中加载 /// </summary> /// <param name="userID"></param> /// <returns></returns> private static UserRecentData LoadFromDB(string userID) { string sql = string.Format("SELECT CATEGORY,DATA FROM USER_RECENT_DATA WHERE USER_ID = {0}", TSqlBuilder.Instance.CheckQuotationMark(userID, true)); UserRecentData result = new UserRecentData() { UserID = userID }; result.InitFromConfiguration(); using (DbContext dbi = DbContext.GetContext(ConnectionDefine.UserRelativeInfoConnectionName)) { Database db = DatabaseFactory.Create(dbi); using (var dr = db.ExecuteReader(System.Data.CommandType.Text, sql)) { while (dr.Read()) { var catDataString = dr.GetString(1); if (catDataString != null) { XElementFormatter formatter = new XElementFormatter(); formatter.OutputShortType = false; XElement root = XElement.Parse(catDataString); var loadedCatData = (UserRecentDataCategory)formatter.Deserialize(root); result.Categories[(string)dr.GetString(0)].ImportValues(loadedCatData); } } } } return result; }
/// <summary> /// 得到缺省的设置 /// </summary> /// <param name="userID"></param> /// <returns></returns> public static UserRecentData GetDefaultSettings(string userID) { userID.CheckStringIsNullOrEmpty("userID"); UserRecentData settings = new UserRecentData(); settings.UserID = userID; settings.InitFromConfiguration(); return settings; }