void WriteDeleteByKeyMethod() { var deleteInfo = DeleteInfoCreator.Create(TableInfo); var sqlParameters = deleteInfo.SqlParameters; var parameterPart = string.Join(", ", sqlParameters.Select(x => $"{x.DotNetType} {x.ColumnName.AsMethodParameter()}")); file.AppendLine($"public static SqlInfo Delete({parameterPart})"); file.OpenBracket(); file.AppendLine($"const string sql = \"{deleteInfo.Sql}\";"); file.AppendLine(); file.AppendLine("var sqlInfo = new SqlInfo { CommandText = sql };"); if (sqlParameters.Any()) { file.AppendLine(); foreach (var columnInfo in sqlParameters) { file.AppendLine($"sqlInfo.AddInParameter(\"@{columnInfo.ColumnName}\", SqlDbType.{columnInfo.SqlDbType}, {GetValueAccessPath(columnInfo)});"); } } file.AppendLine(); file.AppendLine("return sqlInfo;"); file.CloseBracket(); }
void WriteDeleteByKeyMethod() { if (!TableInfo.IsSupportSelectByKey) { return; } const string methodName = "Delete"; var deleteByKeyInfo = DeleteInfoCreator.Create(TableInfo); var sqlParameters = deleteByKeyInfo.SqlParameters; var callerMemberPath = $"{RepositoryNamespace}.{ClassName}.{methodName}"; var parameterDefinitionPart = string.Join(", ", sqlParameters.Select(x => $"{x.DotNetType} {x.ColumnName.AsMethodParameter()}")); var sharedMethodInvocationParameters = string.Join(", ", sqlParameters.Select(x => $"{x.ColumnName.AsMethodParameter()}")); file.AppendLine(); file.AppendLine("/// <summary>"); file.AppendLine($"///{Padding.ForComment} Deletes only one record by given primary keys."); file.AppendLine("/// </summary>"); file.AppendLine($"public GenericResponse<int> {methodName}({parameterDefinitionPart})"); file.OpenBracket(); file.AppendLine($"var sqlInfo = {sharedRepositoryClassAccessPath}.Delete({sharedMethodInvocationParameters});"); file.AppendLine(); file.AppendLine($"const string CallerMemberPath = \"{callerMemberPath}\";"); file.AppendLine(); file.AppendLine("return this.ExecuteNonQuery(CallerMemberPath, sqlInfo);"); file.CloseBracket(); }
void WriteDeleteByKeyMethod() { if (!TableInfo.IsSupportSelectByKey) { return; } var methodName = "Delete" + CamelCasedTableName; var deleteByKeyInfo = DeleteInfoCreator.Create(TableInfo); var sqlParameters = deleteByKeyInfo.SqlParameters; var callerMemberPath = $"{FullClassName}.{methodName}"; var parameterDefinitionPart = string.Join(", ", sqlParameters.Select(x => $"{x.DotNetType} {x.ColumnName.AsMethodParameter()}")); var sharedMethodInvocationParameters = string.Join(", ", sqlParameters.Select(x => $"{x.ColumnName.AsMethodParameter()}")); file.AppendLine(); file.AppendLine("/// <summary>"); file.AppendLine($"///{Padding.ForComment} Deletes only one record by given primary keys."); file.AppendLine("/// </summary>"); file.AppendLine($"public void {methodName}({parameterDefinitionPart})"); file.OpenBracket(); file.AppendLine($"var sqlInfo = {sharedRepositoryClassAccessPath}.Delete({sharedMethodInvocationParameters});"); file.AppendLine(); file.AppendLine($"const string CallerMemberPath = \"{callerMemberPath}\";"); file.AppendLine(); var whereParameters = string.Join(", ", deleteByKeyInfo.SqlParameters.Select(column => $"@{column.ColumnName}: {{{column.ColumnName.AsMethodParameter()}}}")); file.AppendLine("var effectedRowCount = unitOfWork.ExecuteNonQuery(CallerMemberPath, sqlInfo);"); file.AppendLine("if (effectedRowCount != 1)"); file.OpenBracket(); file.AppendLine($"throw new InvalidDataException($\"{{effectedRowCount}} row effected. Effected row count should be 1 when delete from table {TableInfo.SchemaName}.{TableInfo.TableName}. WhereParameters: {whereParameters} \");"); file.CloseBracket(); file.CloseBracket(); file.AppendLine(); file.AppendLine("/// <summary>"); var keys = string.Join(", ", deleteByKeyInfo.SqlParameters.Select(column => column.ColumnName.ToContractName())); string PrepareDeleteParameters(IColumnInfo column) { if (Context.TableInfo.Columns.First(c => c.ColumnName == column.ColumnName).SqlReaderMethod == SqlReaderMethods.GetBooleanValueFromChar) { return($"contract.{column.ColumnName.ToContractName()} ? \"1\" : \"0\""); } return($"contract.{column.ColumnName.ToContractName()}"); } file.AppendLine($"///{Padding.ForComment} Deletes only one record by given contract primary keys.({keys})"); file.AppendLine("/// </summary>"); file.AppendLine($"public void {methodName}({TableEntityClassNameForMethodParametersInRepositoryFiles} contract)"); file.OpenBracket(); file.AppendLine("if (contract == null)"); file.OpenBracket(); file.AppendLine("throw new ArgumentNullException(nameof(contract));"); file.CloseBracket(); file.AppendLine($"{methodName}({string.Join(", ", deleteByKeyInfo.SqlParameters.Select(PrepareDeleteParameters))});"); file.CloseBracket(); }