/// <summary> /// Retorna o parâmetro correspondente a chave primária /// </summary> /// <param name="transaction">Transação.</param> /// <param name="entityName">Nome da entidade</param> /// <returns>Pâremetro correspondente a chave primária</returns> public object GetPrimaryKey(IPersistenceTransactionExecuter transaction, string entityName) { var metadata = _typeSchema.GetTypeMetadata(entityName); var identityMetadata = metadata.GetKeyProperties().FirstOrDefault(); GDAStoredProcedure procedure = new GDAStoredProcedure("control.GetIdentityProcedure"); procedure.AddParameter("?schemaname", metadata.TableName.Schema); procedure.AddParameter("?tablename", metadata.TableName.Name); procedure.AddParameter("?columnname", identityMetadata.ColumnName); using (GDASession session = new GDASession(GDASettings.GetProviderConfiguration(ProviderName))) { var da = new DataAccess(); return(da.ExecuteScalar(session, procedure)); } }
/// <summary> /// Pesquisa a projeção para as informações da entidade. /// </summary> /// <param name="entityInfo"></param> /// <returns></returns> public Query.ProjectionSearcherResult Search(Query.EntityInfo entityInfo) { if (entityInfo != null) { var typeMetadata = _typeSchema.GetTypeMetadata(entityInfo.FullName); if (typeMetadata != null) { var entries = typeMetadata.Where(f => f.Direction == Data.Schema.DirectionParameter.Input || f.Direction == Data.Schema.DirectionParameter.InputOutput).Select(f => new Colosoft.Query.ProjectionSearcherResult.Entry(f.Name, null)); if (typeMetadata.IsVersioned) { entries = entries.Concat(new Colosoft.Query.ProjectionSearcherResult.Entry[] { new Query.ProjectionSearcherResult.Entry(Query.DataAccessConstants.RowVersionPropertyName, null) }); } return(new Query.ProjectionSearcherResult(entries)); } } return(null); }
/// <summary> /// Retorna o parâmetro correspondente a chave primária /// </summary> /// <param name="transaction"></param> /// <param name="entityName">Nome da entidade</param> /// <returns>Pâremetro correspondente a chave primária</returns> public object GetPrimaryKey(IPersistenceTransactionExecuter transaction, string entityName) { var metadata = _typeSchema.GetTypeMetadata(entityName); var identityMetadata = metadata.GetKeyProperties().FirstOrDefault(); using (var session = new GDASession(GDASettings.GetProviderConfiguration(ProviderName))) { DataAccess da = session != null ? new DataAccess(session.ProviderConfiguration) : new DataAccess(); var indexes = new List <int>(); var script = "BEGIN \"CONTROL\".\"GETIDENTITY\"(:1,:2,:3,:4); END;"; var parameters = new GDA.Collections.GDAParameterCollection(); parameters.Add(new GDAParameter(":1", metadata.TableName.Schema, System.Data.ParameterDirection.Input)); parameters.Add(new GDAParameter(":2", metadata.TableName.Name, System.Data.ParameterDirection.Input)); parameters.Add(new GDAParameter(":3", identityMetadata.ColumnName, System.Data.ParameterDirection.Input)); var resultParameter = new GDAParameter(":4", null) { DbType = System.Data.DbType.Int32, Direction = System.Data.ParameterDirection.Output }; parameters.Add(resultParameter); da.ExecuteCommand(session, script, parameters.ToArray()); return(resultParameter.Value); } }
/// <summary> /// Recupera os metadados associados com a entidade informada. /// </summary> /// <param name="entity"></param> /// <returns></returns> private ITypeMetadata GetTypeMetadata(EntityInfo entity) { return(_typeSchema.GetTypeMetadata(entity.FullName)); }