コード例 #1
0
        private static void writeClass( DBConnection cn, string tableName, bool isRevisionHistoryTable, bool isRevisionHistoryClass )
        {
            columns = new TableColumns( cn, tableName, isRevisionHistoryClass );

            writer.WriteLine( "public partial class " + GetClassName( cn, tableName, isRevisionHistoryTable, isRevisionHistoryClass ) + " {" );

            var revisionHistorySuffix = GetRevisionHistorySuffix( isRevisionHistoryClass );

            // Write public static methods.
            writeInsertRowMethod( tableName, revisionHistorySuffix, "", columns.KeyColumns );
            writeInsertRowMethod( tableName, revisionHistorySuffix, "WithoutAdditionalLogic", columns.KeyColumns );
            writeUpdateRowsMethod( cn, tableName, revisionHistorySuffix, "" );
            writeUpdateRowsMethod( cn, tableName, revisionHistorySuffix, "WithoutAdditionalLogic" );
            writeDeleteRowsMethod( cn, tableName, revisionHistorySuffix, true );
            writeDeleteRowsMethod( cn, tableName, revisionHistorySuffix + "WithoutAdditionalLogic", false );
            writePrivateDeleteRowsMethod( cn, tableName, isRevisionHistoryClass );
            writer.WriteLine(
                "static partial void preDelete( List<" + DataAccessStatics.GetTableConditionInterfaceName( cn, database, tableName ) + "> conditions, ref " +
                getPostDeleteCallClassName( cn, tableName ) + " postDeleteCall );" );

            writer.WriteLine( "private ModificationType modType;" );
            writer.WriteLine( "private List<" + DataAccessStatics.GetTableConditionInterfaceName( cn, database, tableName ) + "> conditions;" );

            foreach( var column in columns.AllColumnsExceptRowVersion )
                writeFieldsAndPropertiesForColumn( column );

            foreach( var column in columns.DataColumns.Where( i => !columns.KeyColumns.Contains( i ) ) )
                FormItemStatics.WriteFormItemGetters( writer, column.GetModificationField() );

            // Write constructors.
            writeCreateForInsertMethod( cn, tableName, isRevisionHistoryTable, isRevisionHistoryClass, revisionHistorySuffix );
            writeCreateForUpdateMethod( cn, tableName, isRevisionHistoryTable, isRevisionHistoryClass, revisionHistorySuffix );
            if( columns.DataColumns.Any() )
                writeCreateForSingleRowUpdateMethod( cn, tableName, isRevisionHistoryTable, isRevisionHistoryClass, revisionHistorySuffix );
            writeGetConditionListMethod( cn, tableName );
            writer.WriteLine( "private " + GetClassName( cn, tableName, isRevisionHistoryTable, isRevisionHistoryClass ) + "() {}" );

            if( columns.DataColumns.Any() )
                writeSetAllDataMethod();

            // Write execute methods and helpers.
            writeExecuteMethod( tableName );
            writer.WriteLine( "partial void preInsert();" );
            writer.WriteLine( "partial void preUpdate();" );
            writeExecuteWithoutAdditionalLogicMethod( tableName );
            writeExecuteInsertOrUpdateMethod( cn, tableName, isRevisionHistoryClass, columns.KeyColumns, columns.IdentityColumn );
            writeAddColumnModificationsMethod( columns.AllNonIdentityColumnsExceptRowVersion );
            if( isRevisionHistoryClass ) {
                writeCopyLatestRevisionsMethod( cn, tableName, columns.AllNonIdentityColumnsExceptRowVersion );
                DataAccessStatics.WriteGetLatestRevisionsConditionMethod( writer, columns.PrimaryKeyAndRevisionIdColumn.Name );
            }
            writeRethrowAsEwfExceptionIfNecessary();
            writer.WriteLine(
                "static partial void populateConstraintNamesToViolationErrorMessages( Dictionary<string,string> constraintNamesToViolationErrorMessages );" );
            writer.WriteLine( "partial void postInsert();" );
            writer.WriteLine( "partial void postUpdate();" );
            writeMarkColumnValuesUnchangedMethod();

            writer.WriteLine( "}" );
        }
コード例 #2
0
        internal static void WriteClassIfNecessary(TextWriter writer, IEnumerable <WebItemParameter> parameters)
        {
            if (!parameters.Any())
            {
                return;
            }

            writer.WriteLine("internal class ParametersModification {");
            foreach (var parameter in parameters)
            {
                writer.WriteLine("private readonly DataValue<{0}> {1} = new DataValue<{0}>();".FormatWith(parameter.TypeName, parameter.Name));
                if (parameter.IsString || parameter.IsEnumerable)
                {
                    writePropertyDocComment(writer, parameter);
                    writer.WriteLine("internal " + parameter.TypeName + " " + parameter.PropertyName + " {");
                    writer.WriteLine("get { return " + parameter.Name + ".Value; }");

                    // setter
                    writer.WriteLine("set {");
                    writer.WriteLine("if( value == null )");
                    writer.WriteLine("throw new ApplicationException( \"You cannot specify null for the value of a string or an IEnumerable.\" );");
                    writer.WriteLine(parameter.Name + ".Value = value;");
                    writer.WriteLine("}");

                    writer.WriteLine("}");
                }
                else
                {
                    writePropertyDocComment(writer, parameter);
                    writer.WriteLine(
                        "internal " + parameter.TypeName + " " + parameter.PropertyName + " { get { return " + parameter.Name + ".Value; } set { " + parameter.Name +
                        ".Value = value; } }");
                }

                FormItemStatics.WriteFormItemGetters(writer, parameter.GetModificationField());
            }
            writer.WriteLine("}");
        }
コード例 #3
0
        internal static void WriteClassIfNecessary(TextWriter writer, IEnumerable <VariableSpecification> parameters)
        {
            if (!parameters.Any())
            {
                return;
            }

            writer.WriteLine("internal class ParametersModification: ParametersModificationBase {");
            foreach (var parameter in parameters)
            {
                if (parameter.IsString || parameter.IsEnumerable)
                {
                    writer.WriteLine("private " + parameter.TypeName + " " + parameter.Name + ";");
                    writePropertyDocComment(writer, parameter);
                    writer.WriteLine("internal " + parameter.TypeName + " " + parameter.PropertyName + " {");
                    writer.WriteLine("get { return " + parameter.Name + "; }");

                    // setter
                    writer.WriteLine("set {");
                    writer.WriteLine("if( value == null )");
                    writer.WriteLine("throw new ApplicationException( \"You cannot specify null for the value of a string or an IEnumerable.\" );");
                    writer.WriteLine(parameter.Name + " = value;");
                    writer.WriteLine("}");

                    writer.WriteLine("}");
                }
                else
                {
                    writePropertyDocComment(writer, parameter);
                    writer.WriteLine("internal " + parameter.TypeName + " " + parameter.PropertyName + " { get; set; }");
                }

                FormItemStatics.WriteFormItemGetters(writer, parameter.GetModificationField());
            }
            writer.WriteLine("}");
        }