예제 #1
0
        /*
         * Build the default constructor
         */
        protected override void BuildDefaultConstructor()
        {
            base.BuildDefaultConstructor();

            if (CompilParams.IncludeDebugInformation)
            {
                // If in debug mode, set the timeout to some huge value (ASURT 49427)
                //      Server.ScriptTimeout = 30000000;
                CodeAssignStatement setScriptTimeout = new CodeAssignStatement();
                setScriptTimeout.Left = new CodePropertyReferenceExpression(
                    new CodePropertyReferenceExpression(
                        new CodeThisReferenceExpression(), "Server"),
                    "ScriptTimeout");
                setScriptTimeout.Right = new CodePrimitiveExpression(DebugScriptTimeout);
                _ctor.Statements.Add(setScriptTimeout);
            }

            if (Parser.TransactionMode != 0 /*TransactionOption.Disabled*/)
            {
                _ctor.Statements.Add(new CodeAssignStatement(
                                         new CodePropertyReferenceExpression(new CodeThisReferenceExpression(), "TransactionMode"),
                                         new CodePrimitiveExpression(Parser.TransactionMode)));
            }

            if (Parser.AspCompatMode)
            {
                _ctor.Statements.Add(new CodeAssignStatement(
                                         new CodePropertyReferenceExpression(new CodeThisReferenceExpression(), "AspCompatMode"),
                                         new CodePrimitiveExpression(Parser.AspCompatMode)));
            }

            if (Parser.AsyncMode)
            {
                _ctor.Statements.Add(new CodeAssignStatement(
                                         new CodePropertyReferenceExpression(new CodeThisReferenceExpression(), "AsyncMode"),
                                         new CodePrimitiveExpression(Parser.AsyncMode)));
            }

            if (Parser.OutputCacheParameters != null)
            {
                OutputCacheParameters cacheSettings = Parser.OutputCacheParameters;
                if ((cacheSettings.CacheProfile != null && cacheSettings.CacheProfile.Length != 0) ||
                    cacheSettings.Duration != 0 ||
                    cacheSettings.Location == OutputCacheLocation.None)
                {
                    // Add the following code snippet as a static on the class:
                    //
                    // private static OutputCacheParameters __outputCacheSettings = null;
                    //
                    CodeMemberField outputCacheSettingsField = new CodeMemberField(typeof(OutputCacheParameters), outputCacheSettingsFieldName);
                    outputCacheSettingsField.Attributes    |= MemberAttributes.Static;
                    outputCacheSettingsField.InitExpression = new CodePrimitiveExpression(null);
                    _sourceDataClass.Members.Add(outputCacheSettingsField);

                    // Then, add the following code to the default constructor:
                    //
                    // if (__outputCacheSettings == null)
                    //     __outputCacheSettings = new OutputCacheParameters(.....)
                    //

                    // This is the "if (__outputCacheSettings == null)" part
                    CodeConditionStatement outputCacheSettingsCondition = new CodeConditionStatement();
                    outputCacheSettingsCondition.Condition = new CodeBinaryOperatorExpression(
                        new CodeFieldReferenceExpression(
                            _classTypeExpr,
                            outputCacheSettingsFieldName),
                        CodeBinaryOperatorType.IdentityEquality,
                        new CodePrimitiveExpression(null));

                    // This is the "__outputCacheSettings = new OutputCacheParameters()" part


                    // e.g. declare local variable: OutputCacheParameters outputCacheSettings;
                    CodeVariableDeclarationStatement outputCacheSettingsDeclaration = new CodeVariableDeclarationStatement();
                    outputCacheSettingsDeclaration.Type = new CodeTypeReference(typeof(OutputCacheParameters));
                    outputCacheSettingsDeclaration.Name = outputCacheSettingsLocalName;
                    outputCacheSettingsCondition.TrueStatements.Insert(0, outputCacheSettingsDeclaration);

                    // e.g. outputCacheSettings = new outputCacheParameters;
                    CodeObjectCreateExpression cacheSettingsObject = new CodeObjectCreateExpression();
                    cacheSettingsObject.CreateType = new CodeTypeReference(typeof(OutputCacheParameters));

                    CodeVariableReferenceExpression outputCacheSettings =
                        new CodeVariableReferenceExpression(outputCacheSettingsLocalName);

                    CodeAssignStatement setOutputCacheObject =
                        new CodeAssignStatement(outputCacheSettings, cacheSettingsObject);

                    // Add the statement to the "true" clause
                    outputCacheSettingsCondition.TrueStatements.Add(setOutputCacheObject);

                    if (cacheSettings.IsParameterSet(OutputCacheParameter.CacheProfile))
                    {
                        CodeAssignStatement setPropertyStatement = new CodeAssignStatement(
                            new CodePropertyReferenceExpression(outputCacheSettings, "CacheProfile"),
                            new CodePrimitiveExpression(cacheSettings.CacheProfile));

                        outputCacheSettingsCondition.TrueStatements.Add(setPropertyStatement);
                    }

                    if (cacheSettings.IsParameterSet(OutputCacheParameter.Duration))
                    {
                        CodeAssignStatement setPropertyStatement = new CodeAssignStatement(
                            new CodePropertyReferenceExpression(outputCacheSettings, "Duration"),
                            new CodePrimitiveExpression(cacheSettings.Duration));

                        outputCacheSettingsCondition.TrueStatements.Add(setPropertyStatement);
                    }

                    if (cacheSettings.IsParameterSet(OutputCacheParameter.Enabled))
                    {
                        CodeAssignStatement setPropertyStatement = new CodeAssignStatement(
                            new CodePropertyReferenceExpression(outputCacheSettings, "Enabled"),
                            new CodePrimitiveExpression(cacheSettings.Enabled));

                        outputCacheSettingsCondition.TrueStatements.Add(setPropertyStatement);
                    }

                    if (cacheSettings.IsParameterSet(OutputCacheParameter.Location))
                    {
                        CodeAssignStatement setPropertyStatement = new CodeAssignStatement(
                            new CodePropertyReferenceExpression(outputCacheSettings, "Location"),
                            new CodeFieldReferenceExpression(
                                new CodeTypeReferenceExpression(typeof(OutputCacheLocation)),
                                cacheSettings.Location.ToString()));

                        outputCacheSettingsCondition.TrueStatements.Add(setPropertyStatement);
                    }

                    if (cacheSettings.IsParameterSet(OutputCacheParameter.NoStore))
                    {
                        CodeAssignStatement setPropertyStatement = new CodeAssignStatement(
                            new CodePropertyReferenceExpression(outputCacheSettings, "NoStore"),
                            new CodePrimitiveExpression(cacheSettings.NoStore));

                        outputCacheSettingsCondition.TrueStatements.Add(setPropertyStatement);
                    }

                    if (cacheSettings.IsParameterSet(OutputCacheParameter.SqlDependency))
                    {
                        CodeAssignStatement setPropertyStatement = new CodeAssignStatement(
                            new CodePropertyReferenceExpression(outputCacheSettings, "SqlDependency"),
                            new CodePrimitiveExpression(cacheSettings.SqlDependency));

                        outputCacheSettingsCondition.TrueStatements.Add(setPropertyStatement);
                    }

                    if (cacheSettings.IsParameterSet(OutputCacheParameter.VaryByControl))
                    {
                        CodeAssignStatement setPropertyStatement = new CodeAssignStatement(
                            new CodePropertyReferenceExpression(outputCacheSettings, "VaryByControl"),
                            new CodePrimitiveExpression(cacheSettings.VaryByControl));

                        outputCacheSettingsCondition.TrueStatements.Add(setPropertyStatement);
                    }

                    if (cacheSettings.IsParameterSet(OutputCacheParameter.VaryByCustom))
                    {
                        CodeAssignStatement setPropertyStatement = new CodeAssignStatement(
                            new CodePropertyReferenceExpression(outputCacheSettings, "VaryByCustom"),
                            new CodePrimitiveExpression(cacheSettings.VaryByCustom));

                        outputCacheSettingsCondition.TrueStatements.Add(setPropertyStatement);
                    }

                    if (cacheSettings.IsParameterSet(OutputCacheParameter.VaryByContentEncoding))
                    {
                        CodeAssignStatement setPropertyStatement = new CodeAssignStatement(
                            new CodePropertyReferenceExpression(outputCacheSettings, "VaryByContentEncoding"),
                            new CodePrimitiveExpression(cacheSettings.VaryByContentEncoding));

                        outputCacheSettingsCondition.TrueStatements.Add(setPropertyStatement);
                    }
                    if (cacheSettings.IsParameterSet(OutputCacheParameter.VaryByHeader))
                    {
                        CodeAssignStatement setPropertyStatement = new CodeAssignStatement(
                            new CodePropertyReferenceExpression(outputCacheSettings, "VaryByHeader"),
                            new CodePrimitiveExpression(cacheSettings.VaryByHeader));

                        outputCacheSettingsCondition.TrueStatements.Add(setPropertyStatement);
                    }

                    if (cacheSettings.IsParameterSet(OutputCacheParameter.VaryByParam))
                    {
                        CodeAssignStatement setPropertyStatement = new CodeAssignStatement(
                            new CodePropertyReferenceExpression(outputCacheSettings, "VaryByParam"),
                            new CodePrimitiveExpression(cacheSettings.VaryByParam));

                        outputCacheSettingsCondition.TrueStatements.Add(setPropertyStatement);
                    }

                    // e.g. __outputCacheSettings = outputCacheSettings;
                    CodeFieldReferenceExpression staticOutputCacheSettings =
                        new CodeFieldReferenceExpression(_classTypeExpr, outputCacheSettingsFieldName);
                    CodeAssignStatement assignOutputCacheSettings =
                        new CodeAssignStatement(staticOutputCacheSettings, outputCacheSettings);
                    // Add the statement to the "true" clause
                    outputCacheSettingsCondition.TrueStatements.Add(assignOutputCacheSettings);

                    _ctor.Statements.Add(outputCacheSettingsCondition);
                }
            }
        }
 protected override void BuildDefaultConstructor()
 {
     base.BuildDefaultConstructor();
     if (base.CompilParams.IncludeDebugInformation)
     {
         CodeAssignStatement statement = new CodeAssignStatement {
             Left  = new CodePropertyReferenceExpression(new CodePropertyReferenceExpression(new CodeThisReferenceExpression(), "Server"), "ScriptTimeout"),
             Right = new CodePrimitiveExpression(0x1c9c380)
         };
         base._ctor.Statements.Add(statement);
     }
     if (this.Parser.TransactionMode != 0)
     {
         base._ctor.Statements.Add(new CodeAssignStatement(new CodePropertyReferenceExpression(new CodeThisReferenceExpression(), "TransactionMode"), new CodePrimitiveExpression(this.Parser.TransactionMode)));
     }
     if (this.Parser.AspCompatMode)
     {
         base._ctor.Statements.Add(new CodeAssignStatement(new CodePropertyReferenceExpression(new CodeThisReferenceExpression(), "AspCompatMode"), new CodePrimitiveExpression(this.Parser.AspCompatMode)));
     }
     if (this.Parser.AsyncMode)
     {
         base._ctor.Statements.Add(new CodeAssignStatement(new CodePropertyReferenceExpression(new CodeThisReferenceExpression(), "AsyncMode"), new CodePrimitiveExpression(this.Parser.AsyncMode)));
     }
     if (this.Parser.OutputCacheParameters != null)
     {
         OutputCacheParameters outputCacheParameters = this.Parser.OutputCacheParameters;
         if (((outputCacheParameters.CacheProfile != null) && (outputCacheParameters.CacheProfile.Length != 0)) || ((outputCacheParameters.Duration != 0) || (outputCacheParameters.Location == OutputCacheLocation.None)))
         {
             CodeMemberField field;
             field = new CodeMemberField(typeof(OutputCacheParameters), "__outputCacheSettings")
             {
                 Attributes     = field.Attributes | MemberAttributes.Static,
                 InitExpression = new CodePrimitiveExpression(null)
             };
             base._sourceDataClass.Members.Add(field);
             CodeConditionStatement statement2 = new CodeConditionStatement {
                 Condition = new CodeBinaryOperatorExpression(new CodeFieldReferenceExpression(base._classTypeExpr, "__outputCacheSettings"), CodeBinaryOperatorType.IdentityEquality, new CodePrimitiveExpression(null))
             };
             CodeVariableDeclarationStatement statement3 = new CodeVariableDeclarationStatement {
                 Type = new CodeTypeReference(typeof(OutputCacheParameters)),
                 Name = "outputCacheSettings"
             };
             statement2.TrueStatements.Insert(0, statement3);
             CodeObjectCreateExpression right = new CodeObjectCreateExpression {
                 CreateType = new CodeTypeReference(typeof(OutputCacheParameters))
             };
             CodeVariableReferenceExpression left       = new CodeVariableReferenceExpression("outputCacheSettings");
             CodeAssignStatement             statement4 = new CodeAssignStatement(left, right);
             statement2.TrueStatements.Add(statement4);
             if (outputCacheParameters.IsParameterSet(OutputCacheParameter.CacheProfile))
             {
                 CodeAssignStatement statement5 = new CodeAssignStatement(new CodePropertyReferenceExpression(left, "CacheProfile"), new CodePrimitiveExpression(outputCacheParameters.CacheProfile));
                 statement2.TrueStatements.Add(statement5);
             }
             if (outputCacheParameters.IsParameterSet(OutputCacheParameter.Duration))
             {
                 CodeAssignStatement statement6 = new CodeAssignStatement(new CodePropertyReferenceExpression(left, "Duration"), new CodePrimitiveExpression(outputCacheParameters.Duration));
                 statement2.TrueStatements.Add(statement6);
             }
             if (outputCacheParameters.IsParameterSet(OutputCacheParameter.Enabled))
             {
                 CodeAssignStatement statement7 = new CodeAssignStatement(new CodePropertyReferenceExpression(left, "Enabled"), new CodePrimitiveExpression(outputCacheParameters.Enabled));
                 statement2.TrueStatements.Add(statement7);
             }
             if (outputCacheParameters.IsParameterSet(OutputCacheParameter.Location))
             {
                 CodeAssignStatement statement8 = new CodeAssignStatement(new CodePropertyReferenceExpression(left, "Location"), new CodeFieldReferenceExpression(new CodeTypeReferenceExpression(typeof(OutputCacheLocation)), outputCacheParameters.Location.ToString()));
                 statement2.TrueStatements.Add(statement8);
             }
             if (outputCacheParameters.IsParameterSet(OutputCacheParameter.NoStore))
             {
                 CodeAssignStatement statement9 = new CodeAssignStatement(new CodePropertyReferenceExpression(left, "NoStore"), new CodePrimitiveExpression(outputCacheParameters.NoStore));
                 statement2.TrueStatements.Add(statement9);
             }
             if (outputCacheParameters.IsParameterSet(OutputCacheParameter.SqlDependency))
             {
                 CodeAssignStatement statement10 = new CodeAssignStatement(new CodePropertyReferenceExpression(left, "SqlDependency"), new CodePrimitiveExpression(outputCacheParameters.SqlDependency));
                 statement2.TrueStatements.Add(statement10);
             }
             if (outputCacheParameters.IsParameterSet(OutputCacheParameter.VaryByControl))
             {
                 CodeAssignStatement statement11 = new CodeAssignStatement(new CodePropertyReferenceExpression(left, "VaryByControl"), new CodePrimitiveExpression(outputCacheParameters.VaryByControl));
                 statement2.TrueStatements.Add(statement11);
             }
             if (outputCacheParameters.IsParameterSet(OutputCacheParameter.VaryByCustom))
             {
                 CodeAssignStatement statement12 = new CodeAssignStatement(new CodePropertyReferenceExpression(left, "VaryByCustom"), new CodePrimitiveExpression(outputCacheParameters.VaryByCustom));
                 statement2.TrueStatements.Add(statement12);
             }
             if (outputCacheParameters.IsParameterSet(OutputCacheParameter.VaryByContentEncoding))
             {
                 CodeAssignStatement statement13 = new CodeAssignStatement(new CodePropertyReferenceExpression(left, "VaryByContentEncoding"), new CodePrimitiveExpression(outputCacheParameters.VaryByContentEncoding));
                 statement2.TrueStatements.Add(statement13);
             }
             if (outputCacheParameters.IsParameterSet(OutputCacheParameter.VaryByHeader))
             {
                 CodeAssignStatement statement14 = new CodeAssignStatement(new CodePropertyReferenceExpression(left, "VaryByHeader"), new CodePrimitiveExpression(outputCacheParameters.VaryByHeader));
                 statement2.TrueStatements.Add(statement14);
             }
             if (outputCacheParameters.IsParameterSet(OutputCacheParameter.VaryByParam))
             {
                 CodeAssignStatement statement15 = new CodeAssignStatement(new CodePropertyReferenceExpression(left, "VaryByParam"), new CodePrimitiveExpression(outputCacheParameters.VaryByParam));
                 statement2.TrueStatements.Add(statement15);
             }
             CodeFieldReferenceExpression expression3 = new CodeFieldReferenceExpression(base._classTypeExpr, "__outputCacheSettings");
             CodeAssignStatement          statement16 = new CodeAssignStatement(expression3, left);
             statement2.TrueStatements.Add(statement16);
             base._ctor.Statements.Add(statement2);
         }
     }
 }