/// <summary> /// Filtra as propriedades mapeadas. /// </summary> /// <param name="propertyNames">Nome das propriedades que serão filtradas.</param> /// <param name="direction">Direção das propriedades.</param> /// <param name="mapping">Mapeamento onde o filtro será aplicado.</param> /// <param name="metadata">Metadados da entidade de persistência.</param> /// <param name="persistenceActionType">Tipo de ação de persistencia.</param> private void FilterMapping(string[] propertyNames, DirectionPropertiesName direction, List <IPropertyMetadata> mapping, ITypeMetadata metadata, PersistenceActionType persistenceActionType) { if (propertyNames != null && propertyNames.Length > 0) { List <int> indexs = new List <int>(propertyNames.Length); int i = 0; for (i = 0; i < propertyNames.Length; i++) { string p = propertyNames[i].Trim(); int index = mapping.FindIndex(m => m.Name == p); if (index >= 0) { indexs.Add(index); } } if (direction == DirectionPropertiesName.Inclusion) { var mapping2 = new List <IPropertyMetadata>(); for (i = 0; i < indexs.Count; i++) { mapping2.Add(mapping[indexs[i]]); } mapping.Clear(); mapping.AddRange(mapping2); } else { for (i = 0; i < indexs.Count; i++) { mapping.RemoveAt(indexs[i]); } } } }
/// <summary> /// Atualiza os dados contidos no objUpdate no BD. /// </summary> /// <param name="direction">Direção que os nomes das propriedades terão no comando. (Default: DirectionPropertiesName.Inclusion)</param> /// <exception cref="System.ArgumentNullException"></exception> /// <exception cref="GDAConditionalClauseException">Parameters do not exist to build the conditional clause.</exception> /// <exception cref="GDAException"></exception> /// <returns>Número de linhas afetadas.</returns> public int Update(GDASession session, DirectionPropertiesName direction) { return(GDAOperations.Update(session, _instance, this.ToString(), direction)); }
/// <summary> /// Inseri o registro no BD. /// </summary> /// <param name="direction">Direção que os nomes das propriedades terão no comando. (Default: DirectionPropertiesName.Inclusion)</param> /// <returns>Chave gerada no processo.</returns> /// <exception cref="GDAException"></exception> /// <exception cref="GDAReferenceDAONotFoundException"></exception> public uint Insert(GDASession session, DirectionPropertiesName direction) { return(GDAOperations.Insert(session, _instance, this.ToString(), direction)); }
/// <summary> /// Inseri os dados contidos no objInsert no BD. /// </summary> /// <param name="session">Sessão utilizada para a execução do comando.</param> /// <param name="propertiesNamesInsert">Nome das propriedades separados por virgula, que serão inseridos no comando.</param> /// <param name="direction">Direção que os nomes das propriedades terão no comando. (Default: DirectionPropertiesName.Inclusion)</param> /// <returns>Chave inserido.</returns> /// <exception cref="ArgumentNullException">ObjInsert it cannot be null.</exception> /// <exception cref="GDAException"></exception> public uint Insert(GDASession session, string propertiesNamesInsert, DirectionPropertiesName direction) { return(GDA.GDAOperations.Insert(session, this, propertiesNamesInsert, direction)); }
/// <summary> /// Inseri os dados contidos no objInsert no BD. /// </summary> /// <param name="propertiesNamesInsert">Nome das propriedades separados por virgula, que serão inseridos no comando.</param> /// <param name="direction">Direção que os nomes das propriedades terão no comando. (Default: DirectionPropertiesName.Inclusion)</param> /// <returns>Chave inserido.</returns> /// <exception cref="ArgumentNullException">ObjInsert it cannot be null.</exception> /// <exception cref="GDAException"></exception> public uint Insert(string propertiesNamesInsert, DirectionPropertiesName direction) { return(Insert(null, propertiesNamesInsert, direction)); }
/// <summary> /// Atualiza os dados contidos no objUpdate no BD. /// </summary> /// <param name="session">Sessão utilizada para a execução do comando.</param> /// <param name="objUpdate">Objeto com os dados a serem atualizados.</param> /// <param name="propertiesNamesUpdate">Nome das propriedades separados por virgula, que serão atualizadas no comando.</param> /// <param name="direction">Direção que os nomes das propriedades terão no comando. (Default: DirectionPropertiesName.Inclusion)</param> /// <exception cref="System.ArgumentNullException"></exception> /// <exception cref="GDAConditionalClauseException">Parameters do not exist to build the conditional clause.</exception> /// <exception cref="GDAException"></exception> /// <returns>Número de linhas afetadas.</returns> public virtual int Update(GDASession session, object objUpdate, string propertiesNamesUpdate, DirectionPropertiesName direction) { return(CurrentPersistenceObject.Update(session, (Model)objUpdate, propertiesNamesUpdate, direction)); }
/// <summary> /// Atualiza os dados contidos no objUpdate no BD. /// </summary> /// <param name="model">Model contendo os dados a serem atualizados.</param> /// <param name="propertiesNamesUpdate">Nome das propriedades separadas por virgula, que serão atualizadas no comando.</param> /// <param name="direction">Direção que os nomes das propriedades terão no comando. (Default: DirectionPropertiesName.Inclusion)</param> /// <exception cref="System.ArgumentNullException"></exception> /// <exception cref="GDAConditionalClauseException">Parameters do not exist to build the conditional clause.</exception> /// <exception cref="GDAException"></exception> /// <returns>Número de linhas afetadas.</returns> public static int Update(this object model, string propertiesNamesUpdate, DirectionPropertiesName direction) { return(GDAOperations.Update(model, propertiesNamesUpdate, direction)); }
/// <summary> /// Inseri os dados contidos no objInsert no BD. /// </summary> /// <param name="objInsert">Objeto com os dados a serem inseridos.</param> /// <param name="propertiesNamesInsert">Nome das propriedades separados por virgula, que serão inseridos no comando.</param> /// <param name="direction">Direção que os nomes das propriedades terão no comando. (Default: DirectionPropertiesName.Inclusion)</param> /// <returns>Chave inserido.</returns> /// <exception cref="ArgumentNullException">ObjInsert it cannot be null.</exception> /// <exception cref="GDAException"></exception> public virtual uint Insert(object objInsert, string propertiesNamesInsert, DirectionPropertiesName direction) { return(Insert((Model)objInsert, propertiesNamesInsert, direction)); }
/// <summary> /// Recupera as propriedades que podem ser persistidas do tipo informado. /// </summary> /// <param name="actionType">Tipo de ação que será realizada.</param> /// <param name="instanceType">Tipo da instancia onde as propriedades estão inseridas.</param> /// <param name="propertyNames">Nomes das propriedades que se deseja utilizar.</param> /// <param name="isConditional">True se operação de persistência for condicional.</param> /// <param name="direction">Direção que os nomes das propriedades terão no comando. (Default: DirectionPropertiesName.Inclusion)</param> /// <returns></returns> protected internal override IEnumerable <System.Reflection.PropertyInfo> GetPersistenceProperties(PersistenceActionType actionType, Type instanceType, string[] propertyNames, bool isConditional, DirectionPropertiesName direction = DirectionPropertiesName.Inclusion) { return(_owner.GetPersistenceProperties(actionType, instanceType, propertyNames, isConditional, direction)); }
/// <summary> /// Recupera as propriedades de persistencia que são usadas pela ação de atualização. /// </summary> /// <param name="instanceType"></param> /// <param name="propertyNames"></param> /// <param name="direction"></param> /// <param name="typeMetadata"></param> /// <param name="isConditional"></param> /// <returns></returns> private IEnumerable <System.Reflection.PropertyInfo> GetDeletePersistenceProperties(Type instanceType, string[] propertyNames, DirectionPropertiesName direction, ITypeMetadata typeMetadata, bool isConditional) { if (isConditional) { return(Enumerable.Empty <System.Reflection.PropertyInfo>()); } else { return(typeMetadata.GetKeyProperties().Select(f => instanceType.GetProperty(f.Name)).Where(f => f != null)); } }
/// <summary> /// Atualiza os dados contidos no objUpdate no BD. /// </summary> /// <param name="model">Model contendo os dados a serem atualizados.</param> /// <param name="propertiesNamesUpdate">Nome das propriedades separadas por virgula, que ser�o atualizadas no comando.</param> /// <param name="direction">Dire��o que os nomes das propriedades ter�o no comando. (Default: DirectionPropertiesName.Inclusion)</param> /// <exception cref="System.ArgumentNullException"></exception> /// <exception cref="GDAConditionalClauseException">Parameters do not exist to build the conditional clause.</exception> /// <exception cref="GDAException"></exception> /// <returns>N�mero de linhas afetadas.</returns> public static int Update(object model, string propertiesNamesUpdate, DirectionPropertiesName direction) { return(GetDAO(model).Update(model, propertiesNamesUpdate, direction)); }
/// <summary> /// Inseri o registro no BD. /// </summary> /// <param name="session">Sess�o utilizada para a execu��o do comando.</param> /// <param name="model">Model contendo os dados a serem inseridos.</param> /// <param name="propertiesNamesInsert">Nome das propriedades separados por virgula, que ser�o inseridos no comando.</param> /// <param name="direction">Dire��o que os nomes das propriedades ter�o no comando. (Default: DirectionPropertiesName.Inclusion)</param> /// <returns>Chave gerada no processo.</returns> /// <exception cref="GDAException"></exception> /// <exception cref="GDAReferenceDAONotFoundException"></exception> public static uint Insert(GDASession session, object model, string propertiesNamesInsert, DirectionPropertiesName direction) { return(GetDAO(model).Insert(session, model, propertiesNamesInsert, direction)); }
/// <summary> /// Inseri o registro no BD. /// </summary> /// <param name="model">Model contendo os dados a serem inseridos.</param> /// <param name="propertiesNamesInsert">Nome das propriedades separados por virgula, que ser�o inseridos no comando.</param> /// <param name="direction">Dire��o que os nomes das propriedades ter�o no comando. (Default: DirectionPropertiesName.Inclusion)</param> /// <returns>Chave gerada no processo.</returns> /// <exception cref="GDAException"></exception> /// <exception cref="GDAReferenceDAONotFoundException"></exception> public static uint Insert(object model, string propertiesNamesInsert, DirectionPropertiesName direction) { return(Insert(null, model, propertiesNamesInsert, direction)); }
/// <summary> /// Inseri os dados contidos no objInsert no BD. /// </summary> /// <param name="objInsert">Objeto com os dados a serem inseridos.</param> /// <param name="propertiesNamesInsert">Nome das propriedades separados por virgula, que serão inseridos no comando.</param> /// <param name="direction">Direção que os nomes das propriedades terão no comando. (Default: DirectionPropertiesName.Inclusion)</param> /// <returns>Chave inserido.</returns> /// <exception cref="ArgumentNullException">ObjInsert it cannot be null.</exception> /// <exception cref="GDAException"></exception> public virtual uint Insert(Model objInsert, string propertiesNamesInsert, DirectionPropertiesName direction) { return(CurrentPersistenceObject.Insert(objInsert, propertiesNamesInsert, direction)); }
/// <summary> /// Recupera as propriedades de persistencia. /// </summary> /// <param name="actionType"></param> /// <param name="instanceType"></param> /// <param name="propertyNames"></param> /// <param name="isConditional"></param> /// <param name="direction"></param> /// <returns></returns> protected override IEnumerable <System.Reflection.PropertyInfo> GetPersistenceProperties(PersistenceActionType actionType, Type instanceType, string[] propertyNames, bool isConditional, DirectionPropertiesName direction = DirectionPropertiesName.Inclusion) { var typeMetadata = TypeSchema.GetTypeMetadata(instanceType.FullName); if (typeMetadata == null) { throw new Exception(ResourceMessageFormatter.Create(() => Properties.Resources.Exception_TypeMetadataNotFound, instanceType.FullName).Format()); } if (actionType == PersistenceActionType.Insert) { return(GetInsertPersistenceProperties(instanceType, propertyNames, direction, typeMetadata)); } else if (actionType == PersistenceActionType.Update) { return(GetUpdatePersistenceProperties(instanceType, propertyNames, direction, typeMetadata, isConditional)); } else if (actionType == PersistenceActionType.Delete) { return(GetDeletePersistenceProperties(instanceType, propertyNames, direction, typeMetadata, isConditional)); } throw new NotSupportedException(); }
/// <summary> /// Atualiza os dados contidos no objUpdate no BD. /// </summary> /// <param name="objUpdate">Objeto com os dados a serem atualizados.</param> /// <param name="propertiesNamesUpdate">Nome das propriedades separados por virgula, que serão atualizadas no comando.</param> /// <param name="direction">Direção que os nomes das propriedades terão no comando. (Default: DirectionPropertiesName.Inclusion)</param> /// <exception cref="System.ArgumentNullException"></exception> /// <exception cref="GDAConditionalClauseException">Parameters do not exist to build the conditional clause.</exception> /// <exception cref="GDAException"></exception> /// <returns>Número de linhas afetadas.</returns> public virtual int Update(Model objUpdate, string propertiesNamesUpdate, DirectionPropertiesName direction) { return(CurrentPersistenceObject.Update(objUpdate, propertiesNamesUpdate, direction)); }
/// <summary> /// Recupera as propriedades de persistencia que são usadas pela ação de inserção. /// </summary> /// <param name="instanceType"></param> /// <param name="propertyNames"></param> /// <param name="direction"></param> /// <param name="typeMetadata"></param> /// <returns></returns> private IEnumerable <System.Reflection.PropertyInfo> GetInsertPersistenceProperties(Type instanceType, string[] propertyNames, DirectionPropertiesName direction, ITypeMetadata typeMetadata) { var parameterTypes = new PersistenceParameterType[] { PersistenceParameterType.Field }; var directions = new DirectionParameter[] { DirectionParameter.Output, DirectionParameter.InputOptionalOutput, DirectionParameter.InputOutput, DirectionParameter.OutputOnlyInsert, DirectionParameter.OnlyInsert, DirectionParameter.InputOptionalOutputOnlyInsert }; var mapping = typeMetadata.Where(f => directions.Contains(f.Direction) && parameterTypes.Contains(f.ParameterType)).ToList(); FilterMapping(propertyNames, direction, mapping, typeMetadata, PersistenceActionType.Insert); var keyMapping = typeMetadata.GetKeyProperties(); return(mapping.Union(keyMapping, PropertyMetadataEqualityComparer.Instance).Select(f => instanceType.GetProperty(f.Name)).Where(f => f != null)); }
/// <summary> /// Atualiza os dados contidos no objUpdate no BD. /// </summary> /// <param name="objUpdate">Objeto com os dados a serem atualizados.</param> /// <param name="propertiesNamesUpdate">Nome das propriedades separados por virgula, que serão atualizadas no comando.</param> /// <param name="direction">Direção que os nomes das propriedades terão no comando. (Default: DirectionPropertiesName.Inclusion)</param> /// <exception cref="System.ArgumentNullException"></exception> /// <exception cref="GDAConditionalClauseException">Parameters do not exist to build the conditional clause.</exception> /// <exception cref="GDAException"></exception> /// <returns>Número de linhas afetadas.</returns> public virtual int Update(object objUpdate, string propertiesNamesUpdate, DirectionPropertiesName direction) { return(Update((Model)objUpdate, propertiesNamesUpdate, direction)); }
/// <summary> /// Atualiza os dados contidos no objUpdate no BD. /// </summary> /// <param name="propertiesNamesUpdate">Nome das propriedades separados por virgula, que serão atualizadas no comando.</param> /// <param name="direction">Direção que os nomes das propriedades terão no comando. (Default: DirectionPropertiesName.Inclusion)</param> /// <exception cref="System.ArgumentNullException"></exception> /// <exception cref="GDAConditionalClauseException">Parameters do not exist to build the conditional clause.</exception> /// <exception cref="GDAException"></exception> /// <returns>Número de linhas afetadas.</returns> public virtual int Update(string propertiesNamesUpdate, DirectionPropertiesName direction) { return(GDAOperations.Update(null, this, propertiesNamesUpdate, direction)); }
/// <summary> /// Inseri o registro no BD. /// </summary> /// <param name="session">Sessão utilizada para a execução do comando.</param> /// <param name="model">Model contendo os dados a serem inseridos.</param> /// <param name="propertiesNamesInsert">Nome das propriedades separados por virgula, que serão inseridos no comando.</param> /// <param name="direction">Direção que os nomes das propriedades terão no comando. (Default: DirectionPropertiesName.Inclusion)</param> /// <returns>Chave gerada no processo.</returns> /// <exception cref="GDAException"></exception> /// <exception cref="GDAReferenceDAONotFoundException"></exception> public static uint Insert(this object model, GDASession session, string propertiesNamesInsert, DirectionPropertiesName direction) { return(GDAOperations.Insert(session, model, propertiesNamesInsert, direction)); }
/// <summary> /// Inseri os dados contidos no objInsert no BD. /// </summary> /// <param name="session">Sessão utilizada para a execução do comando.</param> /// <param name="objInsert">Objeto com os dados a serem inseridos.</param> /// <param name="propertiesNamesInsert">Nome das propriedades separados por virgula, que serão inseridos no comando.</param> /// <param name="direction">Direção que os nomes das propriedades terão no comando. (Default: DirectionPropertiesName.Inclusion)</param> /// <returns>Chave inserido.</returns> /// <exception cref="ArgumentNullException">ObjInsert it cannot be null.</exception> /// <exception cref="GDAException"></exception> public virtual uint Insert(GDASession session, object objInsert, string propertiesNamesInsert, DirectionPropertiesName direction) { return(CurrentPersistenceObject.Insert(session, (Model)objInsert, propertiesNamesInsert, direction)); }