public async Task <BusinessBase> RetreiveObject(ContextProvider contextProvider, string objectName, int dbNumber, string key) { string objectKey = ObjectKey(objectName, dbNumber, key); BusinessBase objResp = await Task.Run(() => { return(contextProvider.BusinessItems.GetOrAdd(objectKey, (theKey) => Get(contextProvider, objectName, dbNumber, key, objectKey).Result)); }); return(objResp); }
public BusinessBase(ContextProvider contextProvider, string objectName = "", int dbNumber = 0) { if (objectName == "") { objectName = this.ToString().Split('.').Last(); } this.businessProvider = contextProvider.BusinessProvider; this.contextProvider = contextProvider; decorator = businessProvider.GetDecorator(contextProvider, objectName, dbNumber); dataItem = Decorator.New(this); }
private BusinessBaseDecorator GetDecoratorInternal(ContextProvider contextProvider, string objectName, int dbNumber) { BusinessBaseDecorator decorator; if (decorators.ContainsKey(objectName)) { decorator = decorators[objectName].Invoke(); } else { decorator = DefaultBusinessBaseDecorator(); } decorator.SetProperties(contextProvider, objectName, dbNumber); return(decorator); }
public virtual BusinessBase CreateObject(ContextProvider contextProvider, string objectName, int dbNumber = 0) { BusinessBase obj; if (creators.TryGetValue(objectName, out Func <ContextProvider, BusinessBase> creator)) { obj = creator.Invoke(contextProvider); if (dbNumber != 0) { //obj.ChangeDBNumber(dbNumber); } } else { obj = DefaultBusinessBase(contextProvider, objectName, dbNumber); } return(obj); }
private async Task <BusinessBase> Get(ContextProvider contextProvider, string objectName, int dbNumber, string key, string objectKey) { byte[] data; bool readFromDB = true; BusinessBase obj = CreateObject(contextProvider, objectName, dbNumber); data = await GetData(objectKey); if (data != null) { try { obj.Deserialize(data); readFromDB = false; } catch { // Sometimes Redis returns bad data. } } if (readFromDB) { if (key != "0" && key[0] != '-') { await obj.ReadFromDB(key); } else { if (!obj.IsNew) { await obj.SetNew(); objectKey = obj.Key; } } await StoreObject(obj, objectName); } return(obj); }
public virtual void SetProperties(ContextProvider contextProvider, string objectName, int dbNumber) { string tableName = provider.GetDBTableFor(objectName); this.dbNumber = dbNumber; this.objectName = objectName; this.tableName = tableName; foreach (ColumnDefinition column in contextProvider.DbContext.GetDefinitions(objectName)) { PropertyDefinition def = new PropertyDefinition(column); Properties[column.ColumnName] = def; } if (Properties.Count == 0) { throw new Exception("No Schema found for " + tableName + "."); } Singular = ""; foreach (char letter in objectName) { if (Singular != "" && letter.ToString().ToUpper() == letter.ToString()) { Singular += " "; } Singular += letter; } Plural = Singular + "s"; SetCustomProperties(); PostSetCustomProperties(); }
public virtual FilterBase GetFilter(ContextProvider contextProvider, string filterName) { return(new FilterBase(contextProvider, this, DBNumber)); }
public FilterBase(ContextProvider contextProvider, BusinessBaseDecorator decorator, int dbNumber = 0) { ContextProvider = contextProvider; Decorator = decorator; }
public BusinessBaseDecorator GetDecorator(ContextProvider contextProvider, string name, int dbNumber = 0) { return(GetLazyDecorator(contextProvider, name, dbNumber).Value); }
public bool IsDecoratorCreated(ContextProvider contextProvider, string name, int dbNumber = 0) { return(GetLazyDecorator(contextProvider, name, dbNumber).IsValueCreated); }
public async Task <BusinessBase> RetreiveObject(ContextProvider contextProvider, string objectName, string key) { return(await RetreiveObject(contextProvider, objectName, 0, key)); }
public virtual ListTable GetList(ContextProvider contextProvider, string listName = "", string parameter = "") { string sql = GetListSQL(contextProvider.DbDialect, listName, parameter); return(new ListTable(contextProvider, listName, sql, GetParameter(parameter), DBNumber, AllListDescription)); }