Example #1
0
        public void DeleteModel <TModel>(TModel model, string procedureKey = null, bool forceNonProcedureCommand = false)
        {
            //TODO:Tratar exceções
            Persistence.ModelMaps.ModelMap modelMap    = Persistence.ModelMaps.ModelMap.GetModelMap(model.GetType());
            Dictionary <string, object>    modelValues = Persistence.ModelMaps.ModelMap.GetModelValues(model);

            //Verifica se a entidade foi configurada com uma procedure padronizada de busca
            procedureKey = string.IsNullOrEmpty(procedureKey) ? DataAnnotations.ERBridge.DefaultProceduresKeys.DELETE.ToString() : procedureKey;
            Persistence.ModelMaps.ProcedureMapInfo procedureMap = modelMap.GetProcedureMap(procedureKey);
            IDbCommand command;

            if (procedureMap == null || forceNonProcedureCommand)
            {
                Dictionary <string, object> keyParameters = new Dictionary <string, object>();
                foreach (string key in modelMap.GetKeys())
                {
                    keyParameters.Add(key, modelValues[key]);
                }
                command = CreateSQLDeleteCommand(modelMap, keyParameters);
            }
            else
            {
                command = CreateProcedureCommand(modelMap, modelValues, procedureKey);
            }
            Persistence.Repository repository = GetDefaultRepository(modelMap);
            repository.DataBaseConnection.ExecuteNonQueryCommand(command);

            if (procedureMap != null)
            {
                Dictionary <string, object> returnedValues = repository.ReadOutputParameters(command);
                UpdateProcedureReturnedFields(model, returnedValues, procedureMap);
            }
        }
Example #2
0
        protected virtual IDbCommand CreateProcedureCommand(Persistence.ModelMaps.ModelMap modelMap, Dictionary <string, object> parameters, string procedureNameKey)
        {
            //TODO:Tratar exceções
            Persistence.ModelMaps.ProcedureMapInfo procedureMap = modelMap.GetProcedureMap(procedureNameKey);
            Persistence.Repository repository = GetDefaultRepository(modelMap);
            IDbCommand             command    = repository.DataBaseConnection.GetCommand(procedureMap.Name, Persistence.DatabaseCommandType.PROCEDURE);
            List <Persistence.ModelMaps.ProcedureParameter> procedureParameters = modelMap.GetProcedureParameters(procedureNameKey, parameters);

            repository.DataBaseConnection.AddParameters(command, procedureParameters);
            return(command);
        }
Example #3
0
        public void Delete <TModel>(Dictionary <string, object> parameters, Type modelType = null, string procedureKey = null, bool forceNonProcedureCommand = false)
        {
            //TODO:Tratar exceções
            modelType = (modelType == null) ? typeof(TModel) : modelType;
            Persistence.ModelMaps.ModelMap modelMap = Persistence.ModelMaps.ModelMap.GetModelMap(modelType);
            //Verifica se a entidade foi configurado com uma procedure padronizada de busca
            procedureKey = string.IsNullOrEmpty(procedureKey) ? DataAnnotations.ERBridge.DefaultProceduresKeys.DELETE.ToString() : procedureKey;
            Persistence.ModelMaps.ProcedureMapInfo procedureMap = modelMap.GetProcedureMap(procedureKey);
            IDbCommand command = (procedureMap == null || forceNonProcedureCommand) ? CreateSQLDeleteCommand(modelMap, parameters) : CreateProcedureCommand(modelMap, parameters, procedureKey);

            Persistence.Repository repository = GetDefaultRepository(modelMap);
            repository.DataBaseConnection.ExecuteNonQueryCommand(command);
        }
Example #4
0
        public void Insert <TModel>(TModel model, string procedureKey = null, bool forceNonProcedureCommand = false)
        {
            //TODO:Tratar exceções
            //TODO:Recuperar ID
            Persistence.ModelMaps.ModelMap modelMap    = Persistence.ModelMaps.ModelMap.GetModelMap(model.GetType());
            Dictionary <string, object>    modelValues = Persistence.ModelMaps.ModelMap.GetModelValues(model);

            //Verifica se a entidade foi configurada com uma procedure padronizada de busca
            procedureKey = string.IsNullOrEmpty(procedureKey) ? DataAnnotations.ERBridge.DefaultProceduresKeys.INSERT.ToString() : procedureKey;
            Persistence.ModelMaps.ProcedureMapInfo procedureMap = modelMap.GetProcedureMap(procedureKey);
            IDbCommand command = (procedureMap == null || forceNonProcedureCommand) ? CreateSQLInsertCommand(modelMap, modelValues) : CreateProcedureCommand(modelMap, modelValues, procedureKey);

            Persistence.Repository repository = GetDefaultRepository(modelMap);
            repository.DataBaseConnection.ExecuteScalarCommand(command);
            if (procedureMap != null)
            {
                Dictionary <string, object> returnedValues = repository.ReadOutputParameters(command);
                UpdateProcedureReturnedFields(model, returnedValues, procedureMap);
            }
        }
Example #5
0
        public TModel Select <TModel>(Dictionary <string, object> parameters, bool forceToEager = false, Type modelType = null, string procedureKey = null, bool forceNonProcedureCommand = false)
            where TModel : class, IModel
        {
            //TODO:Tratar exceções
            modelType = (modelType == null) ? typeof(TModel) : modelType;
            Persistence.ModelMaps.ModelMap modelMap = Persistence.ModelMaps.ModelMap.GetModelMap(modelType);
            //Verifica se a entidade foi configurada com uma procedure padronizada de busca
            procedureKey = string.IsNullOrEmpty(procedureKey) ? DataAnnotations.ERBridge.DefaultProceduresKeys.SELECT.ToString() : procedureKey;
            Persistence.ModelMaps.ProcedureMapInfo procedureMap = modelMap.GetProcedureMap(procedureKey);
            IDbCommand command = (procedureMap == null || forceNonProcedureCommand) ? CreateSQLSelectCommand(modelMap, parameters) : CreateProcedureCommand(modelMap, parameters, procedureKey);

            Persistence.Repository repository = GetDefaultRepository(modelMap);
            TModel result = repository.SelectModel <TModel>(command, modelType);

            if (result != null)
            {
                FetchReferences(result, forceToEager);
            }
            return(result);
        }
Example #6
0
        public ModelCollection <TModel> Search <TModel>(Dictionary <string, object> parameters = null, Type modelType = null, string procedureKey = null, bool forceNonProcedureCommand = false)
            where TModel : class, IModel
        {
            //TODO:Tratar exceções
            modelType = (modelType == null) ? typeof(TModel) : modelType;
            Persistence.ModelMaps.ModelMap modelMap = Persistence.ModelMaps.ModelMap.GetModelMap(modelType);
            //Verifica se a entidade foi configurada com uma procedure padronizada de busca
            procedureKey = string.IsNullOrEmpty(procedureKey) ? DataAnnotations.ERBridge.DefaultProceduresKeys.SEARCH.ToString() : procedureKey;
            Persistence.ModelMaps.ProcedureMapInfo procedureMap = modelMap.GetProcedureMap(procedureKey);
            IDbCommand command = (procedureMap == null || forceNonProcedureCommand) ? CreateSQLSelectCommand(modelMap, parameters) : CreateProcedureCommand(modelMap, parameters, procedureKey);

            Persistence.Repository   repository = GetDefaultRepository(modelMap);
            ModelCollection <TModel> result     = repository.SearchModels <TModel>(command, modelType);

            if (procedureMap != null && procedureMap.Parameters.ContainsKey("TotalRows"))
            {
                Dictionary <string, object> returnedValues = repository.ReadOutputParameters(command);
                if (returnedValues.ContainsKey(procedureMap.Parameters["TotalRows"].Name))
                {
                    result.TotalRows = int.Parse(returnedValues[procedureMap.Parameters["TotalRows"].Name].ToString());
                }
            }
            return(result);
        }
Example #7
0
 public void UpdateProcedureReturnedFields <TModel>(TModel model, Dictionary <string, object> returnedValues, Persistence.ModelMaps.ProcedureMapInfo procedureMap)
 {
     Persistence.ModelMaps.ModelMap modelMap = Persistence.ModelMaps.ModelMap.GetModelMap(model.GetType());
     foreach (string key in procedureMap.Parameters.Keys)
     {
         Persistence.ModelMaps.ProcedureParameter parameter = procedureMap.Parameters[key];
         if (parameter.Direction != ParameterDirection.Input && returnedValues.ContainsKey(parameter.Name) && modelMap.GetColumnMap(key) != null)
         {
             typeof(TModel).GetProperty(key).SetValue(model, returnedValues[parameter.Name], null);
         }
     }
 }