private void AddCommandCollectionMembers(CodeTypeDeclaration dataComponentClass, bool isFunctionsDataComponent) { Type type = null; if (isFunctionsDataComponent) { type = typeof(IDbCommand); } else { type = this.providerFactory.CreateCommand().GetType(); } dataComponentClass.Members.Add(CodeGenHelper.FieldDecl(CodeGenHelper.GlobalType(type, 1), DataComponentNameHandler.SelectCmdCollectionVariableName)); CodeMemberProperty property = CodeGenHelper.PropertyDecl(CodeGenHelper.GlobalType(type, 1), DataComponentNameHandler.SelectCmdCollectionPropertyName, MemberAttributes.Family | MemberAttributes.Final); property.GetStatements.Add(CodeGenHelper.If(CodeGenHelper.IdEQ(CodeGenHelper.Field(CodeGenHelper.This(), DataComponentNameHandler.SelectCmdCollectionVariableName), CodeGenHelper.Primitive(null)), new CodeStatement[] { CodeGenHelper.Stm(CodeGenHelper.MethodCall(CodeGenHelper.This(), DataComponentNameHandler.InitCmdCollection, new CodeExpression[0])) })); property.GetStatements.Add(CodeGenHelper.Return(CodeGenHelper.Field(CodeGenHelper.This(), DataComponentNameHandler.SelectCmdCollectionVariableName))); dataComponentClass.Members.Add(property); }
private void AddAdapterMembers(CodeTypeDeclaration dataComponentClass) { Type type = this.providerFactory.CreateDataAdapter().GetType(); CodeMemberField field = CodeGenHelper.FieldDecl(CodeGenHelper.GlobalType(type), DataComponentNameHandler.AdapterVariableName); field.UserData.Add("WithEvents", true); dataComponentClass.Members.Add(field); CodeMemberProperty property = null; if (this.generateHierarchicalUpdate) { property = CodeGenHelper.PropertyDecl(CodeGenHelper.GlobalType(type), DataComponentNameHandler.AdapterPropertyName, MemberAttributes.FamilyOrAssembly | MemberAttributes.Final); } else { property = CodeGenHelper.PropertyDecl(CodeGenHelper.GlobalType(type), DataComponentNameHandler.AdapterPropertyName, MemberAttributes.Private | MemberAttributes.Final); } property.GetStatements.Add(CodeGenHelper.If(CodeGenHelper.IdEQ(CodeGenHelper.Field(CodeGenHelper.This(), DataComponentNameHandler.AdapterVariableName), CodeGenHelper.Primitive(null)), new CodeStatement[] { CodeGenHelper.Stm(CodeGenHelper.MethodCall(CodeGenHelper.This(), DataComponentNameHandler.InitAdapter, new CodeExpression[0])) })); property.GetStatements.Add(CodeGenHelper.Return(CodeGenHelper.Field(CodeGenHelper.This(), DataComponentNameHandler.AdapterVariableName))); dataComponentClass.Members.Add(property); }
internal void AddRowGetRelatedRowsMethods(CodeTypeDeclaration rowClass) { DataRelationCollection childRelations = this.table.ChildRelations; for (int i = 0; i < childRelations.Count; i++) { DataRelation relation = childRelations[i]; string generatorRowClassName = this.codeGenerator.TableHandler.Tables[relation.ChildTable.TableName].GeneratorRowClassName; CodeMemberMethod method = CodeGenHelper.MethodDecl(CodeGenHelper.Type(generatorRowClassName, 1), this.codeGenerator.RelationHandler.Relations[relation.RelationName].GeneratorChildPropName, MemberAttributes.Public | MemberAttributes.Final); method.Statements.Add(CodeGenHelper.If(CodeGenHelper.IdEQ(CodeGenHelper.Indexer(CodeGenHelper.Property(CodeGenHelper.Property(CodeGenHelper.This(), "Table"), "ChildRelations"), CodeGenHelper.Str(relation.RelationName)), CodeGenHelper.Primitive(null)), CodeGenHelper.Return(new CodeArrayCreateExpression(generatorRowClassName, 0)), CodeGenHelper.Return(CodeGenHelper.Cast(CodeGenHelper.Type(generatorRowClassName, 1), CodeGenHelper.MethodCall(CodeGenHelper.Base(), "GetChildRows", CodeGenHelper.Indexer(CodeGenHelper.Property(CodeGenHelper.Property(CodeGenHelper.This(), "Table"), "ChildRelations"), CodeGenHelper.Str(relation.RelationName))))))); rowClass.Members.Add(method); } DataRelationCollection parentRelations = this.table.ParentRelations; for (int j = 0; j < parentRelations.Count; j++) { DataRelation relation2 = parentRelations[j]; string type = this.codeGenerator.TableHandler.Tables[relation2.ParentTable.TableName].GeneratorRowClassName; CodeMemberProperty property = CodeGenHelper.PropertyDecl(CodeGenHelper.Type(type), this.codeGenerator.RelationHandler.Relations[relation2.RelationName].GeneratorParentPropName, MemberAttributes.Public | MemberAttributes.Final); property.GetStatements.Add(CodeGenHelper.Return(CodeGenHelper.Cast(CodeGenHelper.Type(type), CodeGenHelper.MethodCall(CodeGenHelper.This(), "GetParentRow", CodeGenHelper.Indexer(CodeGenHelper.Property(CodeGenHelper.Property(CodeGenHelper.This(), "Table"), "ParentRelations"), CodeGenHelper.Str(relation2.RelationName)))))); property.SetStatements.Add(CodeGenHelper.MethodCall(CodeGenHelper.This(), "SetParentRow", new CodeExpression[] { CodeGenHelper.Value(), CodeGenHelper.Indexer(CodeGenHelper.Property(CodeGenHelper.Property(CodeGenHelper.This(), "Table"), "ParentRelations"), CodeGenHelper.Str(relation2.RelationName)) })); rowClass.Members.Add(property); } }
private void AddConnectionMembers(CodeTypeDeclaration dataComponentClass) { Type type = this.providerFactory.CreateConnection().GetType(); MemberAttributes modifier = ((DesignConnection)this.designTable.Connection).Modifier; dataComponentClass.Members.Add(CodeGenHelper.FieldDecl(CodeGenHelper.GlobalType(type), DataComponentNameHandler.DefaultConnectionVariableName)); CodeMemberProperty property = CodeGenHelper.PropertyDecl(CodeGenHelper.GlobalType(type), DataComponentNameHandler.DefaultConnectionPropertyName, modifier | MemberAttributes.Final); property.GetStatements.Add(CodeGenHelper.If(CodeGenHelper.IdEQ(CodeGenHelper.Field(CodeGenHelper.This(), DataComponentNameHandler.DefaultConnectionVariableName), CodeGenHelper.Primitive(null)), new CodeStatement[] { CodeGenHelper.Stm(CodeGenHelper.MethodCall(CodeGenHelper.This(), DataComponentNameHandler.InitConnection, new CodeExpression[0])) })); property.GetStatements.Add(CodeGenHelper.Return(CodeGenHelper.Field(CodeGenHelper.This(), DataComponentNameHandler.DefaultConnectionVariableName))); property.SetStatements.Add(CodeGenHelper.Assign(CodeGenHelper.Field(CodeGenHelper.This(), DataComponentNameHandler.DefaultConnectionVariableName), CodeGenHelper.Argument("value"))); property.SetStatements.Add(CodeGenHelper.If(CodeGenHelper.IdNotEQ(CodeGenHelper.Property(CodeGenHelper.Property(CodeGenHelper.This(), DataComponentNameHandler.AdapterPropertyName), "InsertCommand"), CodeGenHelper.Primitive(null)), CodeGenHelper.Assign(CodeGenHelper.Property(CodeGenHelper.Property(CodeGenHelper.Property(CodeGenHelper.This(), DataComponentNameHandler.AdapterPropertyName), "InsertCommand"), "Connection"), CodeGenHelper.Argument("value")))); property.SetStatements.Add(CodeGenHelper.If(CodeGenHelper.IdNotEQ(CodeGenHelper.Property(CodeGenHelper.Property(CodeGenHelper.This(), DataComponentNameHandler.AdapterPropertyName), "DeleteCommand"), CodeGenHelper.Primitive(null)), CodeGenHelper.Assign(CodeGenHelper.Property(CodeGenHelper.Property(CodeGenHelper.Property(CodeGenHelper.This(), DataComponentNameHandler.AdapterPropertyName), "DeleteCommand"), "Connection"), CodeGenHelper.Argument("value")))); property.SetStatements.Add(CodeGenHelper.If(CodeGenHelper.IdNotEQ(CodeGenHelper.Property(CodeGenHelper.Property(CodeGenHelper.This(), DataComponentNameHandler.AdapterPropertyName), "UpdateCommand"), CodeGenHelper.Primitive(null)), CodeGenHelper.Assign(CodeGenHelper.Property(CodeGenHelper.Property(CodeGenHelper.Property(CodeGenHelper.This(), DataComponentNameHandler.AdapterPropertyName), "UpdateCommand"), "Connection"), CodeGenHelper.Argument("value")))); int count = this.designTable.Sources.Count; CodeStatement initStmt = CodeGenHelper.VariableDecl(CodeGenHelper.GlobalType(typeof(int)), "i", CodeGenHelper.Primitive(0)); CodeExpression testExpression = CodeGenHelper.Less(CodeGenHelper.Variable("i"), CodeGenHelper.Property(CodeGenHelper.Property(CodeGenHelper.This(), DataComponentNameHandler.SelectCmdCollectionPropertyName), "Length")); CodeStatement incrementStmt = CodeGenHelper.Assign(CodeGenHelper.Variable("i"), CodeGenHelper.BinOperator(CodeGenHelper.Variable("i"), CodeBinaryOperatorType.Add, CodeGenHelper.Primitive(1))); CodeExpression left = CodeGenHelper.Property(CodeGenHelper.Cast(CodeGenHelper.GlobalType(this.providerFactory.CreateCommand().GetType()), CodeGenHelper.Indexer(CodeGenHelper.Property(CodeGenHelper.This(), DataComponentNameHandler.SelectCmdCollectionPropertyName), CodeGenHelper.Variable("i"))), "Connection"); CodeStatement statement3 = CodeGenHelper.If(CodeGenHelper.IdNotEQ(CodeGenHelper.Indexer(CodeGenHelper.Property(CodeGenHelper.This(), DataComponentNameHandler.SelectCmdCollectionPropertyName), CodeGenHelper.Variable("i")), CodeGenHelper.Primitive(null)), CodeGenHelper.Assign(left, CodeGenHelper.Argument("value"))); property.SetStatements.Add(CodeGenHelper.ForLoop(initStmt, testExpression, incrementStmt, new CodeStatement[] { statement3 })); dataComponentClass.Members.Add(property); }
protected void AddSetParameterStatements(DesignParameter parameter, string parameterName, DesignParameter isNullParameter, CodeExpression cmdExpression, int parameterIndex, int isNullParameterIndex, IList statements) { Type parameterUrtType = this.GetParameterUrtType(parameter); CodeCastExpression right = new CodeCastExpression(parameterUrtType, CodeGenHelper.Argument(parameterName)); right.UserData.Add("CastIsBoxing", true); CodeCastExpression expression2 = null; CodeCastExpression expression3 = null; if ((this.codeGenerator != null) && CodeGenHelper.IsGeneratingJSharpCode(this.codeGenerator.CodeProvider)) { expression2 = new CodeCastExpression(typeof(int), CodeGenHelper.Primitive(0)); expression2.UserData.Add("CastIsBoxing", true); expression3 = new CodeCastExpression(typeof(int), CodeGenHelper.Primitive(1)); expression3.UserData.Add("CastIsBoxing", true); } else { expression2 = new CodeCastExpression(typeof(object), CodeGenHelper.Primitive(0)); expression3 = new CodeCastExpression(typeof(object), CodeGenHelper.Primitive(1)); } CodeExpression left = CodeGenHelper.Property(CodeGenHelper.Indexer(CodeGenHelper.Property(cmdExpression, "Parameters"), CodeGenHelper.Primitive(parameterIndex)), "Value"); CodeExpression expression5 = null; if (isNullParameter != null) { expression5 = CodeGenHelper.Property(CodeGenHelper.Indexer(CodeGenHelper.Property(cmdExpression, "Parameters"), CodeGenHelper.Primitive(isNullParameterIndex)), "Value"); } int num = (isNullParameter == null) ? 1 : 2; CodeStatement[] trueStms = new CodeStatement[num]; CodeStatement[] falseStms = new CodeStatement[num]; if (parameter.AllowDbNull && parameterUrtType.IsValueType) { right = new CodeCastExpression(parameterUrtType, CodeGenHelper.Property(CodeGenHelper.Argument(parameterName), "Value")); right.UserData.Add("CastIsBoxing", true); trueStms[0] = CodeGenHelper.Assign(left, right); falseStms[0] = CodeGenHelper.Assign(left, CodeGenHelper.Field(CodeGenHelper.GlobalTypeExpr(typeof(DBNull)), "Value")); if (isNullParameter != null) { trueStms[1] = trueStms[0]; falseStms[1] = falseStms[0]; trueStms[0] = CodeGenHelper.Assign(expression5, expression2); falseStms[0] = CodeGenHelper.Assign(expression5, expression3); } statements.Add(CodeGenHelper.If(CodeGenHelper.EQ(CodeGenHelper.Property(CodeGenHelper.Argument(parameterName), "HasValue"), CodeGenHelper.Primitive(true)), trueStms, falseStms)); } else if (parameter.AllowDbNull && !parameterUrtType.IsValueType) { trueStms[0] = CodeGenHelper.Assign(left, CodeGenHelper.Field(CodeGenHelper.GlobalTypeExpr(typeof(DBNull)), "Value")); falseStms[0] = CodeGenHelper.Assign(left, right); if (isNullParameter != null) { trueStms[1] = trueStms[0]; falseStms[1] = falseStms[0]; trueStms[0] = CodeGenHelper.Assign(expression5, expression3); falseStms[0] = CodeGenHelper.Assign(expression5, expression2); } statements.Add(CodeGenHelper.If(CodeGenHelper.IdEQ(CodeGenHelper.Argument(parameterName), CodeGenHelper.Primitive(null)), trueStms, falseStms)); } else if (!parameter.AllowDbNull && !parameterUrtType.IsValueType) { CodeStatement[] statementArray3 = new CodeStatement[] { CodeGenHelper.Throw(CodeGenHelper.GlobalType(typeof(ArgumentNullException)), parameterName) }; falseStms[0] = CodeGenHelper.Assign(left, right); if (isNullParameter != null) { falseStms[1] = falseStms[0]; falseStms[0] = CodeGenHelper.Assign(expression5, expression2); } statements.Add(CodeGenHelper.If(CodeGenHelper.IdEQ(CodeGenHelper.Argument(parameterName), CodeGenHelper.Primitive(null)), statementArray3, falseStms)); } else if (!parameter.AllowDbNull && parameterUrtType.IsValueType) { if (isNullParameter != null) { statements.Add(CodeGenHelper.Assign(expression5, expression2)); } statements.Add(CodeGenHelper.Assign(left, right)); } }