示例#1
0
        public UpdateCsCustom(WriterContext context, CustomUpdateMethod customUpdateMethod)
            : base(context)
        {
            CustomUpdate = customUpdateMethod;

            var updateColumns = customUpdateMethod.UpdateColumnNames.Split(',');
            var whereColumns  = customUpdateMethod.WhereColumnNames.Split(',');

            foreach (var columnName in updateColumns)
            {
                if (Context.Table.Columns.All(x => x.ColumnName != columnName))
                {
                    throw new ArgumentException("InvalidColumnName:" + columnName);
                }
            }

            foreach (var columnName in whereColumns)
            {
                if (Context.Table.Columns.All(x => x.ColumnName != columnName))
                {
                    throw new ArgumentException("InvalidColumnName:" + columnName);
                }
            }

            _procedureParameters = from c in Context.Table.Columns
                                   where updateColumns.Contains(c.ColumnName) ||
                                   whereColumns.Contains(c.ColumnName) ||
                                   Names.GenericUpdateInformationColumns.Contains(c.ColumnName)
                                   select c;
        }
        void WriteCustomUpdate(CustomUpdateMethod customUpdateMethod)
        {
            var naming = Context.Naming;

            if (customUpdateMethod.Comment != null)
            {
                WriteLine("/// <summary>");
                WriteLine("///" + PaddingForComment + "Updates only one record of {0}", naming.DatabaseTableFullPath);
                WriteLine("/// </summary>");
            }

            WriteLine("public GenericResponse<int> {1}({2}Request request, ObjectHelper objectHelper)",
                      naming.ContractName, customUpdateMethod.DotNetMethodName, naming.ClassNameOfOrchestration);

            WriteLine("{");
            Padding++;
            WriteLine("var returnObject = CreateResponse<int>(objectHelper);");
            WriteLine();
            WriteLine("var bo{0} = new BOA.Business.{1}.{0}(objectHelper.Context);", naming.ClassNameOfBusiness,
                      naming.NamespaceName);

            var parameterPart = "request.DataContract";

            WriteLine();
            WriteLine("var response = bo{0}.{1}({2});", naming.ClassNameOfBusiness, customUpdateMethod.DotNetMethodName,
                      parameterPart);

            WriteLine("if (!response.Success)");
            WriteLine("{");
            Padding++;
            WriteLine("return returnObject.Add(response);");
            Padding--;
            WriteLine("}");
            WriteLine();
            WriteLine("returnObject.Value = response.Value;");
            WriteLine();
            WriteLine("return returnObject;");
            Padding--;
            WriteLine("}");
        }