/// <summary> /// Generates the delete domain operation entry /// </summary> /// <param name="codeGenContext">The code gen context.></param> /// <param name="businessLogicClass">The business logic class.</param> /// <param name="entity">The entity.</param> protected override void GenerateDeleteMethod(CodeGenContext codeGenContext, CodeTypeDeclaration businessLogicClass, BusinessLogicEntity entity) { string parameterName = CodeGenUtilities.MakeLegalParameterName(entity.Name); // public void Delete$EntityName$($entityType$ $entityName$) CodeMemberMethod method = new CodeMemberMethod(); businessLogicClass.Members.Add(method); LinqToSqlEntity ltsEntity = (LinqToSqlEntity)entity; method.Name = "Delete" + CodeGenUtilities.MakeLegalEntityName(entity.Name); method.Attributes = MemberAttributes.Public | MemberAttributes.Final; // final needed to prevent virtual // parameter declaration method.Parameters.Add(new CodeParameterDeclarationExpression(entity.ClrType.Name, parameterName)); // this.DataContext.$TablePropertyName$.Attach(current) CodeExpression contextRef = new CodePropertyReferenceExpression(new CodeThisReferenceExpression(), "DataContext"); CodeExpression tableRef = new CodePropertyReferenceExpression(contextRef, ltsEntity.TablePropertyName); CodeMethodInvokeExpression attachCall = new CodeMethodInvokeExpression(tableRef, "Attach", new CodeArgumentReferenceExpression(parameterName)); method.Statements.Add(attachCall); // this.DataContext.$TablePropertyName$.DeleteOnSubmit(current) CodeMethodInvokeExpression deleteCall = new CodeMethodInvokeExpression(tableRef, "DeleteOnSubmit", new CodeArgumentReferenceExpression(parameterName)); method.Statements.Add(deleteCall); }
/// <summary> /// Generates the select domain operation entry /// </summary> /// <param name="codeGenContext">The code gen context.></param> /// <param name="businessLogicClass">The business logic class.</param> /// <param name="entity">The entity.</param> /// <returns>The newly created method</returns> protected override CodeMemberMethod GenerateSelectMethod(CodeGenContext codeGenContext, CodeTypeDeclaration businessLogicClass, BusinessLogicEntity entity) { CodeMemberMethod method = null; LinqToSqlEntity ltsEntity = entity as LinqToSqlEntity; if (ltsEntity != null && ltsEntity.TablePropertyName != null) { // public IQueryable<$entityType$> GetEntities() method = new CodeMemberMethod(); businessLogicClass.Members.Add(method); // Add developer comment explaining they can add additional parameters method.Comments.Add(new CodeCommentStatement(Resources.BusinessLogicClass_Query_Method_Remarks, false)); method.Name = "Get" + CodeGenUtilities.MakeLegalEntityName(ltsEntity.TablePropertyName); method.ReturnType = new CodeTypeReference("IQueryable", new CodeTypeReference(entity.Name)); method.Attributes = MemberAttributes.Public | MemberAttributes.Final; // final needed to prevent virtual // return this.DataContext.$TablePropertyName$ CodeExpression contextExpr = new CodePropertyReferenceExpression(new CodeThisReferenceExpression(), "DataContext"); CodeExpression expr = new CodePropertyReferenceExpression(contextExpr, ltsEntity.TablePropertyName); CodeMethodReturnStatement returnStmt = new CodeMethodReturnStatement(expr); method.Statements.Add(returnStmt); } return(method); }
/// <summary> /// Generates the update domain operation entry /// </summary> /// <param name="codeGenContext">The code gen context.></param> /// <param name="businessLogicClass">The business logic class.</param> /// <param name="entity">The entity.</param> protected override void GenerateUpdateMethod(CodeGenContext codeGenContext, CodeTypeDeclaration businessLogicClass, BusinessLogicEntity entity) { string currentParameterName = "current" + entity.ClrType.Name; // public void Update$EntityName$($entityType$ current) CodeMemberMethod method = new CodeMemberMethod(); businessLogicClass.Members.Add(method); LinqToSqlEntity ltsEntity = (LinqToSqlEntity)entity; method.Name = "Update" + CodeGenUtilities.MakeLegalEntityName(entity.Name); method.Attributes = MemberAttributes.Public | MemberAttributes.Final; // final needed to prevent virtual // parameter declaration method.Parameters.Add(new CodeParameterDeclarationExpression(entity.ClrType.Name, currentParameterName)); if (!ltsEntity.HasTimestampMember) { // this.ChangeSet.GetOriginal(current) CodeExpression changeSetRef = new CodePropertyReferenceExpression(new CodeThisReferenceExpression(), "ChangeSet"); CodeMethodReferenceExpression getOrigMethodRef = new CodeMethodReferenceExpression(changeSetRef, "GetOriginal"); CodeMethodInvokeExpression changeSetGetOrig = new CodeMethodInvokeExpression(getOrigMethodRef, new CodeArgumentReferenceExpression(currentParameterName)); // this.DataContext.$TablePropertyName$.Attach(current, this.ChangeSet.GetOriginal(current)) CodeExpression contextRef = new CodePropertyReferenceExpression(new CodeThisReferenceExpression(), "DataContext"); CodeExpression tableRef = new CodePropertyReferenceExpression(contextRef, ltsEntity.TablePropertyName); CodeMethodInvokeExpression attachCall = new CodeMethodInvokeExpression(tableRef, "Attach", new CodeArgumentReferenceExpression(currentParameterName), changeSetGetOrig); method.Statements.Add(attachCall); } else { // this.DataContext.$TablePropertyName$.Attach(current, true) CodeExpression contextRef = new CodePropertyReferenceExpression(new CodeThisReferenceExpression(), "DataContext"); CodeExpression tableRef = new CodePropertyReferenceExpression(contextRef, ltsEntity.TablePropertyName); CodeMethodInvokeExpression attachCall = new CodeMethodInvokeExpression(tableRef, "Attach", new CodeArgumentReferenceExpression(currentParameterName), new CodePrimitiveExpression(true)); method.Statements.Add(attachCall); } }