Beispiel #1
0
        public OperationResult Save(TEntity entity, bool validateChilds)
        {
            var result = EngineContext.Current.Resolve <OperationResult>();

            if (entity == null)
            {
                return(result.AddError(Messages.Common_NullEntity));
            }

            if (HasNotExistsOnDatabase(entity))
            {
                return(result.AddError(Messages.Common_UnknownEntity));
            }

            result += _validationProvider.Validate(entity);

            if (result.ContainsError)
            {
                return(result);
            }

            var dbEntity = GetDatabaseVersion(entity);

            if (dbEntity != null)
            {
                entity.Id = dbEntity.Id;
            }

            try {
                if (entity.IsTransient())
                {
                    entity.Id = DateTime.UtcNow.GetTimestamp();
                    CurrentSession.Save(entity);
                }
                else
                {
                    CurrentSession.Update(entity);
                }
            } catch (Exception) {
                _activeSessionManager.RenewSession();

                return(result.AddError(Messages.Common_SaveFailed));
            }

            return(result);
        }
Beispiel #2
0
        public OperationResult SaveChanges()
        {
            var result = EngineContext.Current.Resolve <OperationResult>();

            if (_cachedSettings == null)
            {
                return(result.AddError(Messages.Common_NullEntity));
            }

            result += _validationProvider.Validate(_cachedSettings);

            if (result.ContainsError)
            {
                return(result);
            }

            try {
                var properties = from pi in typeof(TSettings).GetProperties()
                                 where pi.CanWrite && pi.CanRead
                                 select pi;

                var typeName = typeof(TSettings).Name;

                foreach (var property in properties)
                {
                    var key   = string.Concat(typeName, ".", property.Name);
                    var value = property.GetValue(_cachedSettings, null);

                    result += _settingService.Save(key, value);
                }
            } catch {
                return(result);
            }

            return(result);
        }