Esempio n. 1
0
        public DALEntity(StoredProcedureSchema storedProcedureSchema)
        {
            StoredProcedureSchema = storedProcedureSchema;

            var parsedStoredProcedureName = Utility.ParseStoredProcedureName(storedProcedureSchema.Name);

            EntityName       = parsedStoredProcedureName.EntityName;
            ContainingName   = parsedStoredProcedureName.ContainingName;
            HelperMethodName = parsedStoredProcedureName.HelperMethodName;

            StringBuilder entityCode = new StringBuilder();

            if (storedProcedureSchema.StoredProcedureType == StoredProcedureType.MultiRow ||
                storedProcedureSchema.StoredProcedureType == StoredProcedureType.BothSingleAndMultiRow ||
                storedProcedureSchema.StoredProcedureType == StoredProcedureType.SingleRecordSet)
            {
                // GenerateMembersFromResults
                entityCode.AppendLine(GenerateMembersFromResults());
                entityCode.AppendLine(GenerateFullConstructorFromResults());
            }
            else if (storedProcedureSchema.StoredProcedureType == StoredProcedureType.SingleRow ||
                     storedProcedureSchema.StoredProcedureType == StoredProcedureType.SingleValue)
            {
                // GenerateMembersFromOutputParameters
                entityCode.AppendLine(GenerateMembersFromOutputParameters());
                entityCode.AppendLine(GenerateFullConstructorFromOutputParameters());
            }

            EntityCode = entityCode.ToString();
        }
Esempio n. 2
0
        public void TestCreateStoredProcedure()
        {
            var service = this.GetService();

            var p = new StoredProcedureSchema("p1")
                    .AddInParameter("@id", ColumnType.Int())
                    .AddOutParameter("@age", ColumnType.Int())
                    .SetBody("select @age=age from users where id=@id");

            var result = service.GetCreateStoredProcedure(p.ProcedureName, p.Parameters, p.Body);

            Assert.AreEqual("CREATE PROCEDURE [dbo].[p1] @id INT,@age INT OUT\rAS\rBEGIN\rselect @age=age from users where id=@id;\rEND;\r", result);
        }
Esempio n. 3
0
        public void TestCreateStoredProcedure()
        {
            var service = this.GetService();

            var p = new StoredProcedureSchema("p1")
                    .AddInParameter("p_id", ColumnType.Int())
                    .AddOutParameter("p_age", ColumnType.Int())
                    .SetBody("select age into p_age from users where id=p_id");

            var result = service.GetCreateStoredProcedure(p.ProcedureName, p.Parameters, p.Body);

            Assert.AreEqual("CREATE PROCEDURE `p1`(p_id INT,OUT p_age INT)\rBEGIN\rselect age into p_age from users where id=p_id;\rEND", result);
        }
Esempio n. 4
0
        public void RenderEntityCollection(StoredProcedureSchema storedProcedure, StringBuilder dataLayerCode)
        {
            DALEntityCollection entityCollection = new DALEntityCollection(storedProcedure);

            dataLayerCode.AppendLine(entityCollection.TransformText());

            //EntityCollection entityCollection = new EntityCollection();

            //entityCollection.StoredProcedure = new SchemaExplorer.CommandSchema(Database, storedProcedure, DatabaseObjectOwner, DateTime.Now);
            //Templates.ParsedStoredProcedureName parsedNames = TemplateHelper.ParseStoredProcedureName(entityCollection.StoredProcedure);
            //entityCollection.EntityName = parsedNames.EntityName;
            //entityCollection.Database = Database;
            //entityCollection.Render(this.Response);
        }
Esempio n. 5
0
        public DALHelperMethod(GenerationParameters generationParameters, StoredProcedureSchema storedProcedureSchema, GeneratedTypes entityType)
        {
            _storedProcedureSchema = storedProcedureSchema;

            var parsedNames = Utility.ParseStoredProcedureName(storedProcedureSchema.Name);

            //var sqlConnection = new SqlConnection(generationParameters.ConnectionString);

            ConnectionKey            = generationParameters.ConnectionKey;
            DatabaseObjectOwner      = generationParameters.DatabaseObjectOwner;
            EntityType               = entityType;
            MethodName               = parsedNames.HelperMethodName;
            CommandTimeout           = generationParameters.CommandTimeout;
            EntityName               = parsedNames.EntityName;
            Database                 = generationParameters.ConnectionKey;
            StoredProcedureName      = storedProcedureSchema.Name;
            EnableTransactionSupport = generationParameters.EnableTransactionSupport;
        }
Esempio n. 6
0
        public void RenderHelperMethod(GeneratedTypes generateType, StoredProcedureSchema storedProcedure, StringBuilder dataLayerCode)
        {
            DALHelperMethod helperMethod = new DALHelperMethod(GenerationParameters, storedProcedure, generateType);

            dataLayerCode.AppendLine(helperMethod.TransformText());

            //HelperMethod helperMethod = new HelperMethod();
            //helperMethod.EntityType = generateType;
            //helperMethod.StoredProcedure = new SchemaExplorer.CommandSchema(Database, storedProcedure, DatabaseObjectOwner, DateTime.Now);
            //Templates.ParsedStoredProcedureName parsedNames = TemplateHelper.ParseStoredProcedureName(helperMethod.StoredProcedure);
            //helperMethod.EntityName = parsedNames.EntityName;
            //helperMethod.MethodName = parsedNames.HelperMethodName;
            //helperMethod.Database = Database;
            //helperMethod.CommandTimeout = CommandTimeout;
            //helperMethod.ConnectionKey = ConnectionKey;
            //helperMethod.DatabaseObjectOwner = DatabaseObjectOwner;
            //helperMethod.Render(this.Response);
        }
Esempio n. 7
0
 public static Table?GetStoredProcedureDefinition <TDatabase, TParameter>(string connectionString, StoredProcedureSchema storedProcedure, Func <string, string> tableNameTransformer = null)
     where TDatabase : DbConnection, new()
     where TParameter : DbParameter, new()
 {
     try
     {
         using var con = new TDatabase()
               {
                   ConnectionString = connectionString
               };
         con.Open();
         var query   = storedProcedure.SPECIFIC_NAME;
         var command = con.CreateCommand();
         command.CommandText = query;
         command.CommandType = CommandType.StoredProcedure;
         foreach (var param in storedProcedure.Parameters)
         {
             var paramType    = SQLServerMap(param.DATA_TYPE);
             var defaultValue = GetDefault(paramType);
             command.Parameters.Add(new TParameter()
             {
                 ParameterName = param.PARAMETER_NAME,
                 Value         = defaultValue
             });
         }
         using var reader = command.ExecuteReader(behavior: CommandBehavior.SchemaOnly);
         var schema = reader.GetSchemaTable();
         var result = schema.ToEnumerable <TableSchema>().ToList();
         var table  = new Table()
         {
             ConnectionProvider = typeof(TDatabase).FullName,
             ConnectionProviderParameterType = typeof(TParameter).FullName,
             PrimaryKey = null,
             Columns    = result,
             Name       = storedProcedure.SPECIFIC_NAME
         };
         return(table);
     }
     catch
     {
         return(null);
     }
 }
        private string Interprete(Table table, TableSchema column, StoredProcedureSchema sp, string line, bool isPartialRendering = false)
        {
            var buffer = line;

            if (line.Contains("@partial-ignore"))
            {
                partialIgnoring = true;
            }
            if (line.Contains("@#partial-ignore"))
            {
                partialIgnoring = false;
            }
            if (partialIgnoring && isPartialRendering)
            {
                return(string.Empty);
            }
            if (line.StartsWith("@typedef") ||
                line.StartsWith("@nullable") ||
                line.StartsWith("@ext") ||
                line.StartsWith("@partial") ||
                line.Contains("@once") ||
                line.Contains("@partial-ignore") ||
                line.Contains("@#partial-ignore"))
            {
                return(string.Empty);
            }
            if (line.Contains("@namespace") && !string.IsNullOrWhiteSpace(Namespace))
            {
                var splitNamespace = SplitDirective(buffer);
                if (splitNamespace.Length != 2)
                {
                    throw new FormatException("@namespace");
                }
                var replaced = splitNamespace[1].Replace("@namespace_name", Namespace);
                buffer = replaced;
            }
            if (line.Contains("@#namespace") && !string.IsNullOrWhiteSpace(Namespace))
            {
                var splitEndNs = SplitDirective(buffer);
                if (splitEndNs.Length != 2)
                {
                    throw new FormatException("@#namespace");
                }
                buffer = splitEndNs[1];
            }
            if (line.Contains("@class_name"))
            {
                var replaced = buffer.Replace("@class_name", this.RemoveSpecialChars(table.Name));
                buffer = replaced;
            }
            if (line.Contains("@property_type"))
            {
                var replaced = buffer.Replace("@property_type", GetNullableDataType(column));
                buffer = replaced;
            }
            if (line.Contains("@property_name"))
            {
                var replaced = buffer.Replace("@property_name", ColumnNameCleanser(column.ColumnName));
                buffer = replaced;
            }
            if (line.Contains("@database_type"))
            {
                var replaced = buffer.Replace("@database_type", this.DatabaseType);
                buffer = replaced;
            }
            if (line.Contains("@database_parameter_type"))
            {
                var replaced = buffer.Replace("@database_parameter_type", this.ParameterType);
                buffer = replaced;
            }
            if (line.Contains("@sp_name"))
            {
                var replaced = buffer.Replace("@sp_name", sp.SPECIFIC_NAME);
                buffer = replaced;
            }
            if (line.Contains("@sp_args"))
            {
                var args     = string.Join(",", sp.Parameters.Select(x => $"{x.DATA_TYPE} {x.PARAMETER_NAME}"));
                var replaced = buffer.Replace("@sp_args", args);
                buffer = replaced;
            }
            if (line.Contains("@sp_params_name"))
            {
                var sb = new StringBuilder();
                foreach (var param in sp.Parameters)
                {
                    var replaced = buffer.Replace("@sp_params_name", param.PARAMETER_NAME);
                    sb.AppendLine(replaced);
                }
                buffer = sb.ToString();
            }
            return(buffer);
        }
Esempio n. 9
0
        public DALEntityCollection(StoredProcedureSchema storedProcedureSchema)
        {
            var parsedStoredProcedureName = Utility.ParseStoredProcedureName(storedProcedureSchema.Name);

            EntityName = parsedStoredProcedureName.EntityName;
        }
Esempio n. 10
0
 public void HandleSimpleType(StoredProcedureSchema storedProcedure, StringBuilder dataLayerCode)
 {
     RenderHelperMethod(GeneratedTypes.SimpleType, storedProcedure, dataLayerCode);
 }
Esempio n. 11
0
 public void HandleReturnValue(StoredProcedureSchema storedProcedure, StringBuilder dataLayerCode)
 {
     RenderHelperMethod(GeneratedTypes.ReturnValue, storedProcedure, dataLayerCode);
 }
Esempio n. 12
0
 public void HandleResultSetCollection(StoredProcedureSchema storedProcedure, StringBuilder dataLayerCode)
 {
     RenderEntity(GeneratedTypes.ResultSetCollection, storedProcedure, dataLayerCode);
     RenderEntityCollection(storedProcedure, dataLayerCode);
     RenderHelperMethod(GeneratedTypes.ResultSetCollection, storedProcedure, dataLayerCode);
 }
Esempio n. 13
0
 public void HandleOutputEntity(StoredProcedureSchema storedProcedure, StringBuilder dataLayerCode)
 {
     RenderEntity(GeneratedTypes.OutputEntity, storedProcedure, dataLayerCode);
     RenderHelperMethod(GeneratedTypes.OutputEntity, storedProcedure, dataLayerCode);
 }