/// <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);
            }
        }
Ejemplo n.º 4
0
 /// <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));
 }