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(); }
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); }
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); }
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); }
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; }
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); }
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); }
public DALEntityCollection(StoredProcedureSchema storedProcedureSchema) { var parsedStoredProcedureName = Utility.ParseStoredProcedureName(storedProcedureSchema.Name); EntityName = parsedStoredProcedureName.EntityName; }
public void HandleSimpleType(StoredProcedureSchema storedProcedure, StringBuilder dataLayerCode) { RenderHelperMethod(GeneratedTypes.SimpleType, storedProcedure, dataLayerCode); }
public void HandleReturnValue(StoredProcedureSchema storedProcedure, StringBuilder dataLayerCode) { RenderHelperMethod(GeneratedTypes.ReturnValue, storedProcedure, dataLayerCode); }
public void HandleResultSetCollection(StoredProcedureSchema storedProcedure, StringBuilder dataLayerCode) { RenderEntity(GeneratedTypes.ResultSetCollection, storedProcedure, dataLayerCode); RenderEntityCollection(storedProcedure, dataLayerCode); RenderHelperMethod(GeneratedTypes.ResultSetCollection, storedProcedure, dataLayerCode); }
public void HandleOutputEntity(StoredProcedureSchema storedProcedure, StringBuilder dataLayerCode) { RenderEntity(GeneratedTypes.OutputEntity, storedProcedure, dataLayerCode); RenderHelperMethod(GeneratedTypes.OutputEntity, storedProcedure, dataLayerCode); }