/// <summary> /// Gets a code member field based on the provided column. /// </summary> private static CodeMemberField GetCodeMemberField(ILanguageProvider languageProvider, Smo.Column column) { var fieldName = languageProvider.GetFormattedInternalFieldName(column.Name); var typeName = languageProvider.GetTypeString(column.DataType); return(new CodeMemberField { Name = fieldName, Attributes = MemberAttributes.Private, Type = new CodeTypeReference(typeName) }); }
/// <summary> /// Gets a parameter based constructor object. /// </summary> private static CodeConstructor GetParameterBasedConstructor(ILanguageProvider languageProvider, Smo.TableViewBase tableView) { var retval = new CodeConstructor { Attributes = MemberAttributes.Public }; foreach (Smo.Column column in tableView.Columns) { var typeName = languageProvider.GetTypeString(column.DataType); var fieldName = languageProvider.GetFormattedInternalFieldName(column.Name); var methodParameterName = languageProvider.GetFormattedParamenterName(column.Name); retval.Parameters.Add(new CodeParameterDeclarationExpression(new CodeTypeReference(typeName), methodParameterName)); retval.Statements.Add(new CodeAssignStatement(new CodeFieldReferenceExpression(new CodeThisReferenceExpression(), fieldName), new CodeArgumentReferenceExpression(methodParameterName))); } return(retval); }
/// <summary> /// Gets a code member property based on the provided column. /// </summary> private static CodeMemberProperty GetCodeMemberProperty(ILanguageProvider languageProvider, Smo.Column column) { var typeName = languageProvider.GetTypeString(column.DataType); var fieldName = languageProvider.GetFormattedInternalFieldName(column.Name); var retval = new CodeMemberProperty { Name = column.Name, Attributes = MemberAttributes.Public | MemberAttributes.Final, Type = new CodeTypeReference(typeName), HasGet = true, HasSet = true }; retval.GetStatements.Add(new CodeMethodReturnStatement(new CodeFieldReferenceExpression(new CodeThisReferenceExpression(), fieldName))); retval.SetStatements.Add(new CodeAssignStatement(new CodeFieldReferenceExpression(new CodeThisReferenceExpression(), fieldName), new CodePropertySetValueReferenceExpression())); return(retval); }
/// <summary> /// Gets a "GetAll" method for the data object. /// </summary> private static CodeMemberMethod GetReadCodeMemberMethod(ILanguageProvider languageProvider, Smo.TableViewBase tableView) { var retval = new CodeMemberMethod(); var methodName = string.Format("GetAll{0}", tableView.Name); retval.Attributes = MemberAttributes.Public | MemberAttributes.Static; retval.Name = methodName; retval.ReturnType = new CodeTypeReference("IEnumerable", new[] { new CodeTypeReference(tableView.Name) }); retval.Statements.Add(new CodeVariableDeclarationStatement(new CodeTypeReference("IEnumerable", new[] { new CodeTypeReference(tableView.Name) }), "retval", new CodeObjectCreateExpression(new CodeTypeReference("List", new[] { new CodeTypeReference(tableView.Name) })))); var tryCatchStatement = new CodeTryCatchFinallyStatement(); tryCatchStatement.TryStatements.Add(new CodeVariableDeclarationStatement("Database", "database", new CodeMethodInvokeExpression(new CodeTypeReferenceExpression("DatabaseFactory"), "CreateDatabase", new CodeExpression[0]))); tryCatchStatement.TryStatements.Add(new CodeVariableDeclarationStatement("DbCommand", "command", new CodeMethodInvokeExpression(new CodeVariableReferenceExpression("database"), "GetStoredProcCommand", new CodeExpression[] { new CodePrimitiveExpression(methodName) }))); tryCatchStatement.TryStatements.Add(new CodeVariableDeclarationStatement("IDataReader", "reader", new CodeMethodInvokeExpression(new CodeVariableReferenceExpression("database"), "ExecuteReader", new CodeExpression[] { new CodeVariableReferenceExpression("command") }))); var loopStatement = new CodeIterationStatement(new CodeSnippetStatement(""), new CodeMethodInvokeExpression(new CodeMethodReferenceExpression(new CodeVariableReferenceExpression("reader"), "Read")), new CodeSnippetStatement(""), new CodeStatement[0]); var entityInstanceName = GetFormattedObjectInstanceName(tableView.Name); loopStatement.Statements.Add(new CodeVariableDeclarationStatement(tableView.Name, entityInstanceName, new CodeObjectCreateExpression(tableView.Name, new CodeExpression[0]))); foreach (Smo.Column column in tableView.Columns) { loopStatement.Statements.Add(new CodeAssignStatement(new CodePropertyReferenceExpression(new CodeVariableReferenceExpression(entityInstanceName), column.Name), new CodeCastExpression(languageProvider.GetTypeString(column.DataType), new CodeIndexerExpression(new CodeVariableReferenceExpression("reader"), new CodeExpression[] { new CodePrimitiveExpression(column.Name) })))); } loopStatement.Statements.Add(new CodeMethodInvokeExpression(new CodeVariableReferenceExpression("retval"), "Add", new CodeExpression[] { new CodeVariableReferenceExpression(entityInstanceName) })); tryCatchStatement.TryStatements.Add(loopStatement); var catchClause = GetCatchClause(); tryCatchStatement.CatchClauses.Add(catchClause); retval.Statements.Add(tryCatchStatement); retval.Statements.Add(new CodeMethodReturnStatement(new CodeVariableReferenceExpression("retval"))); return(retval); }