コード例 #1
0
        public CSharpMethod GenerateFetchAll()
        {
            List <String> methodCode = new List <String>();

            DomainEntityExtender[] extenders = this.Entity.Container.Domain.Containers.SelectMany(c => c.ContainerEntities).OfType <DomainEntityExtender>().Where(e => e.ReferencedEntity == this.Entity && !String.IsNullOrEmpty(e.FilterCode)).ToArray();
            methodCode.Add("IEnumerable<" + this.Entity.ReferencedTable.ProgrammaticName + "Record> recordCollection = this.Provider.DataProvider." + this.BaseEntity.Container.ContainerName + "." + this.BaseEntity.EntityName + ".FetchAll();");
            methodCode.Add("foreach (" + this.Entity.ReferencedTable.ProgrammaticName + "Record record in recordCollection)");
            methodCode.Add("{");
            methodCode.Add("    if (record != null" + (this.Entity.FilterCode != null ? " && " + this.Entity.FilterCode : "") + ")");
            methodCode.Add("    {");
            foreach (DomainEntityExtender extender in extenders)
            {
                methodCode.Add("        " + (extender == extenders[0] ? "if" : "else if") + " (" + extender.FilterCode + ")");
                methodCode.Add("            yield return new Local" + extender.EntityName + "Model(this.Provider, record);");
            }
            if (extenders.Length != 0)
            {
                methodCode.Add("        else");
            }
            methodCode.Add((extenders.Length == 0 ? "" : "    ") + "        yield return new Local" + this.Entity.EntityName + "Model(this.Provider, record);");
            methodCode.Add("    }");
            methodCode.Add("}");

            CSharpMethod result = new CSharpMethod(this);

            result.XmlSummary = "Retrieves all instances of the <see cref='" + this.Entity.EntityName + "Model' /> class.";
            result.XmlReturns = "An enumerable collection of <see cref='" + this.Entity.EntityName + "Model' /> instances.";
            result.MethodType = "IEnumerable<Local" + this.Entity.EntityName + "Model>";
            result.Name       = "FetchAll";
            result.MethodCode = methodCode.ToArray();
            return(result);
        }
コード例 #2
0
        private CSharpMethod GenerateFetchById()
        {
            List <String> methodCode = new List <String>();

            DomainEntityExtender[] extenders = this.Entity.Container.Domain.Containers.SelectMany(c => c.ContainerEntities).OfType <DomainEntityExtender>().Where(e => e.ReferencedEntity == this.Entity && !String.IsNullOrEmpty(e.FilterCode)).ToArray();
            methodCode.Add(this.Entity.ReferencedTable.ProgrammaticName + "Record record = this.Provider.DataProvider." + this.BaseEntity.Container.ContainerName + "." + this.BaseEntity.EntityName + ".FetchById(id);");
            methodCode.Add("if (record == null)");
            methodCode.Add("    return null;");
            foreach (DomainEntityExtender extender in extenders)
            {
                methodCode.Add("if (" + extender.FilterCode + ")");
                methodCode.Add("    return new Local" + extender.EntityName + "Model(this.Provider, record);");
            }
            methodCode.Add("return new Local" + this.Entity.EntityName + "Model(this.Provider, record);");

            CSharpMethod result = new CSharpMethod(this);

            result.XmlSummary       = "Retrieves a specific <see cref='" + this.Entity.EntityName + "Model' /> instance.";
            result.XmlReturns       = "The <see cref='" + this.Entity.EntityName + "Model' /> instance that matches the specified <paramref name='id' />; or null, if no matching instance can be found.";
            result.MethodType       = "Local" + this.Entity.EntityName + "Model";
            result.Name             = "FetchById";
            result.MethodParameters = new CSharpParameter[] { new CSharpParameter()
                                                              {
                                                                  ParameterType = this.Entity.ReferencedTable.TableKey.ProgrammaticType, ParameterName = "id", XmlSummary = "The unique value which distinctly identifies the <see cref='" + this.Entity.EntityName + "Model' /> instance to be returned."
                                                              }, };
            result.MethodCode = methodCode.ToArray();
            return(result);
        }
コード例 #3
0
        /// <summary>
        ///     Generates a method member within the runtime type.
        /// </summary>
        /// <param name="writer">
        ///     The text writer that outputs the content into the file.
        /// </param>
        /// <param name="member">
        ///     The method to be generated.
        /// </param>
        protected virtual void GenerateMember(StreamWriter writer, CSharpMethod member)
        {
            // Generate the documentation
            this.GenerateDocumentation(writer, true, "summary", member.XmlSummary);
            this.GenerateDocumentation(writer, true, member.MethodGenerics);
            this.GenerateDocumentation(writer, true, member.MethodParameters);
            this.GenerateDocumentation(writer, true, "returns", member.XmlReturns);
            this.GenerateDocumentation(writer, true, "remarks", member.XmlRemarks);

            // Generate the signature
            if (member.Attributes != null && member.Attributes.Length != 0)
            {
                writer.WriteLine("        [" + String.Join(", ", member.Attributes) + "]");
            }
            writer.Write("        ");
            writer.Write(String.IsNullOrEmpty(member.MethodType) ? "void" : member.MethodType);
            writer.Write(" ");
            writer.Write(member.Name);
            writer.Write(member.MethodGenerics == null || !member.MethodGenerics.Any() ? "" : "<" + String.Join(", ", member.MethodGenerics.Select(generic => generic.GenericName)) + ">");
            writer.Write("(");
            writer.Write(member.MethodParameters == null || !member.MethodParameters.Any() ? "" : String.Join(", ", member.MethodParameters.Select(parameter => (parameter.ParameterReference == CSharpReference.None ? "" : parameter.ParameterReference.ConvertTo <String>().ToLower() + " ") + parameter.ParameterType + " " + parameter.ParameterName)));
            writer.Write(")");
            writer.Write(member.MethodGenerics == null || !member.MethodGenerics.Any() ? "" : String.Join("", member.MethodGenerics.Select(generic => generic.GenericConstraints == null || !generic.GenericConstraints.Any() ? "" : " where " + generic.GenericName + " : " + String.Join(", ", generic.GenericConstraints))));
            writer.Write(";");
            writer.WriteLine();
        }
コード例 #4
0
        private CSharpMethod GenerateGetTableName()
        {
            CSharpMethod result = new CSharpMethod(this);

            result.XmlSummary = "Gets the underlying database table name for <see cref='" + this.Entity.EntityName + "/>.";
            result.XmlReturns = "The table name.";
            result.MethodType = "String";
            result.Name       = "GetTableName";
            result.MethodCode = new String[] { "return this.Provider.DataProvider." + this.BaseEntity.Container.ContainerName + "." + this.BaseEntity.EntityName + ".TableName;" };
            return(result);
        }
コード例 #5
0
        private CSharpMethod GenerateCreate()
        {
            CSharpMethod result = new CSharpMethod(this);

            result.XmlSummary = "Creates a new <see cref='" + this.Entity.EntityName + "Model' /> instance.";
            result.XmlReturns = "A newly instantiated <see cref='" + this.Entity.EntityName + "Model' /> instance.";
            result.MethodType = "Local" + this.Entity.EntityName + "Model";
            result.Name       = "Create";
            result.MethodCode = new String[] { "return new Local" + this.Entity.EntityName + "Model(this.Provider);" };
            return(result);
        }
コード例 #6
0
        public CSharpMethod GenerateFetchAllByAttribute(DomainEntityAttribute attribute)
        {
            String parameterName = attribute.AttributeName.Substring(0, 1).ToLower() + attribute.AttributeName.Substring(1) + "Id";

            List <String> methodCode = new List <String>();

            DomainEntityExtender[] extenders = this.Entity.Container.Domain.Containers.SelectMany(c => c.ContainerEntities).OfType <DomainEntityExtender>().Where(e => e.ReferencedEntity == this.Entity && !String.IsNullOrEmpty(e.FilterCode)).ToArray();
            methodCode.Add("IEnumerable<" + this.Entity.ReferencedTable.ProgrammaticName + "Record> recordCollection = this.Provider.DataProvider." + this.BaseEntity.Container.ContainerName + "." + this.BaseEntity.EntityName + ".FetchAllBy" + attribute.Column.ProgrammaticName + "(" + parameterName + ");");
            methodCode.Add("foreach (" + this.Entity.ReferencedTable.ProgrammaticName + "Record record in recordCollection)");
            methodCode.Add("{");
            methodCode.Add("    if (record != null" + (this.Entity.FilterCode != null ? " && " + this.Entity.FilterCode : "") + ")");
            methodCode.Add("    {");
            foreach (DomainEntityExtender extender in extenders)
            {
                methodCode.Add("        " + (extender == extenders[0] ? "if" : "else if") + " (" + extender.FilterCode + ")");
                methodCode.Add("            yield return new Local" + extender.EntityName + "Model(this.Provider, record);");
            }
            if (extenders.Length != 0)
            {
                methodCode.Add("        else");
            }
            methodCode.Add((extenders.Length == 0 ? "" : "    ") + "        yield return new Local" + this.Entity.EntityName + "Model(this.Provider, record);");
            methodCode.Add("    }");
            methodCode.Add("}");

            CSharpMethod result = new CSharpMethod(this);

            result.XmlSummary       = "Retrieves a collection of <see cref='" + this.Entity.EntityName + "Model' /> instances.";
            result.XmlReturns       = "The <see cref='" + this.Entity.EntityName + "Model' /> instances that match the specified <paramref name='" + parameterName + "' />.";
            result.MethodType       = "IEnumerable<Local" + this.Entity.EntityName + "Model>";
            result.Name             = "FetchAllBy" + attribute.AttributeName + "Id";
            result.MethodParameters = new CSharpParameter[]
            {
                new CSharpParameter()
                {
                    XmlSummary    = "The value which identifies the <see cref='" + this.Entity.EntityName + "Model' /> instances to be returned.",
                    ParameterType = attribute.Column.ProgrammaticType,
                    ParameterName = parameterName
                }
            };
            result.MethodCode = methodCode.ToArray();
            return(result);
        }