public virtual bool Update(object id, string languageCode, string value)
        {
            Storage.IPersistentEditableString obj = null;
            // start transaction
            try
            {
                beginDbTransaction();

                obj = GetById(id);
                if (obj == null)
                {
                    // we can only update here
                    return(false);
                }

                obj.ESValue        = value;
                obj.ESLanguageCode = languageCode;
                updatePersistentString(obj);

                commitDbTransaction();
            }
            catch (Exception ex)
            {
                logError("Error updating ES", ex);
                rollbackDbTransaction();
                return(false);
            }
            finally
            {
                disposeDbTransaction();
            }
            // remove conext from cache
            if (!string.IsNullOrWhiteSpace(obj.ESContext))
            {
                string cacheKey = getCacheContextKey(languageCode, obj.ESContext);
                cacheService.Remove(cacheKey);
            }
            return(true);
        }
 protected abstract void deletePersistentString(Storage.IPersistentEditableString obj);