Example #1
0
        /// <summary>
        /// Extend a method for specific model.
        /// </summary>
        /// <param name="model">Model to extend.</param>
        /// <param name="extendMethod">Extend method delegate.</param>
        private void ExtendMethod(Model model, Func <Model, Method> extendMethod)
        {
            Method method = extendMethod(model);

            if (method == null)
            {
                return;
            }

            DataAccessNamespace dataAccessNamespace;
            DataAccess          dataAccess;

            // Discover relative DataAccessNamespace or create a new one if it does not exist.
            if (mapping.DataAccessNamespaces.Contains(model.Namespace))
            {
                dataAccessNamespace = mapping.DataAccessNamespaces[model.Namespace];
            }
            else
            {
                dataAccessNamespace = new DataAccessNamespace {
                    Name = model.Namespace
                };

                mapping.DataAccessNamespaces.Add(dataAccessNamespace);
            }

            // Discover relative DataAccess or create a new one if it does not exist.
            if (dataAccessNamespace.DataAccesses.Contains(model.Name))
            {
                dataAccess = dataAccessNamespace.DataAccesses[model.Name];
            }
            else
            {
                dataAccess = new DataAccess
                {
                    Name        = model.Name,
                    Namespace   = model.Namespace,
                    Description = string.Format(CultureInfo.InvariantCulture, "Auto generated class for model {0}.", model.Name)
                };

                dataAccessNamespace.DataAccesses.Add(dataAccess);
            }

            // Create an auto generated method for model if it does not exist.
            if (!dataAccess.Methods.Contains(method.Name))
            {
                dataAccess.Methods.Add(method);
            }
        }
Example #2
0
        private static void AddDataAccess(Procedure procedure)
        {
            string schema;

            if (mappingRuleManager.IsIncluded(procedure))
            {
                var classMethod = mappingRuleManager.GetClassMethod(procedure);

                if (classMethod == null)
                {
                    return;
                }

                schema = procedure.Schema.ToPascalCase();

                if (!mapping.DataAccessNamespaces.Contains(schema))
                {
                    mapping.DataAccessNamespaces.Add(new DataAccessNamespace()
                    {
                        Name = schema
                    });
                }

                DataAccessNamespace nameSpace = mapping.DataAccessNamespaces[schema];

                if (!nameSpace.DataAccesses.Contains(classMethod.ClassName))
                {
                    nameSpace.DataAccesses.Add(
                        new DataAccess()
                    {
                        Namespace   = schema,
                        Name        = classMethod.ClassName,
                        Description = string.Format(CultureInfo.InvariantCulture, "Access data about {0}.", classMethod.ClassName)
                    });
                }

                AddMethod(nameSpace, classMethod, procedure);
            }
        }
Example #3
0
        private static void AddMethod(DataAccessNamespace nameSpace, ClassMethodContainer classMethod, Procedure procedure)
        {
            // No matched return result.
            if (classMethod.MethodName.StartsWith("Get", StringComparison.OrdinalIgnoreCase) &&
                !mapping.ContainsModel(classMethod.ClassName))
            {
                return;
            }

            Method method = new Method()
            {
                Name        = classMethod.MethodName.ToPascalCase(),
                CommandText = string.Format(CultureInfo.InvariantCulture, "[{0}].[{1}]", procedure.Schema, procedure.Name),
                CommandType = CommandType.StoredProcedure,
                Description = procedure.Description,
                MethodType  = MappingHelper.GetMethodType(classMethod.MethodName)
            };

            LoadParameters(method.Parameters, procedure);

            LoadResults(method, classMethod.ClassName, procedure);

            nameSpace.DataAccesses[classMethod.ClassName].Methods.Add(method);
        }