Ejemplo n.º 1
0
        public static void Generate(GeneratorOptions generatorOptions)
        {
            if (generatorOptions == null)
            {
                throw new ArgumentNullException(nameof(generatorOptions));
            }
            generatorOptions.Check();
            var result = InternalUtil.GetTables(generatorOptions.DatabaseType, generatorOptions.Connection, generatorOptions.Schema, generatorOptions.TablePrefix);

            if (result.Item1 != null)
            {
                GeneralConstantsUtil.Start(generatorOptions.TargetFramwork, generatorOptions.BaseNameSpace, generatorOptions.IgnorePrefix, result.Item2, result.Item1, generatorOptions);
                GeneralUnitOfWorkUtil.Start(generatorOptions.TargetFramwork, generatorOptions.BaseNameSpace, generatorOptions.IgnorePrefix, result.Item2, result.Item1, generatorOptions);
                GeneralDomainUtil.Start(generatorOptions.TargetFramwork, generatorOptions.BaseNameSpace, generatorOptions.IgnorePrefix, result.Item1, generatorOptions);
                GeneralRepositoryUtil.Start(generatorOptions.TargetFramwork, generatorOptions.BaseNameSpace, generatorOptions.IgnorePrefix, result.Item2, result.Item1, generatorOptions);
                GeneralCacheUtil.Start(generatorOptions.TargetFramwork, generatorOptions.BaseNameSpace, generatorOptions.IgnorePrefix, result.Item2, result.Item1, generatorOptions);
                GeneralDomainServiceUtil.Start(generatorOptions.TargetFramwork, generatorOptions.BaseNameSpace, generatorOptions.IgnorePrefix, result.Item1, generatorOptions);
                GeneralApplicationUtil.Start(generatorOptions.TargetFramwork, generatorOptions.BaseNameSpace, generatorOptions.IgnorePrefix, result.Item2, result.Item1, generatorOptions);
                GeneralDataTransferUtil.Start(generatorOptions.TargetFramwork, generatorOptions.BaseNameSpace, generatorOptions.IgnorePrefix, result.Item1, generatorOptions);
            }
            //将解决方法包含到项目中
            InternalUtil.IncludeProject(generatorOptions.BaseNameSpace, generatorOptions.BaseProjectPath);
            Console.WriteLine("generator code completed.");
        }
        public static GeneratorOptions Create(CodeClass codeClass, string baseDirPath)
        {
            var generatorOptions = new GeneratorOptions();

            generatorOptions.BaseProjectPath = baseDirPath;
            Microsoft.VisualStudio.Shell.ThreadHelper.ThrowIfNotOnUIThread();

            foreach (CodeAttribute classAttribute in codeClass.Attributes)
            {
                switch (classAttribute.Name.ToLower())
                {
                //[CodeGeneratorConnection("localhost")]
                case "codegeneratorconnection":
                    if (!string.IsNullOrEmpty(classAttribute.Value?.TrimStart('"').TrimEnd('"')))
                    {
                        generatorOptions.Connection = classAttribute.Value.Trim().TrimStart('"').TrimEnd('"');
                    }
                    break;

                //[CodeGeneratorSchema("public")]
                case "codegeneratorschema":
                    if (!string.IsNullOrEmpty(classAttribute.Value?.TrimStart('"').TrimEnd('"')))
                    {
                        generatorOptions.Schema = classAttribute.Value.Trim().TrimStart('"').TrimEnd('"');
                    }
                    break;

                //[CodeGeneratorDatabaseType("public")]
                case "codegeneratordatabasetype":
                    if (!string.IsNullOrEmpty(classAttribute.Value?.TrimStart('"').TrimEnd('"')))
                    {
                        generatorOptions.DatabaseType = classAttribute.Value.Trim().TrimStart('"').TrimEnd('"');
                    }
                    break;

                //[CodeGeneratorTablePrefix("public")]
                case "codegeneratortableprefix":
                    if (!string.IsNullOrEmpty(classAttribute.Value?.TrimStart('"').TrimEnd('"')))
                    {
                        generatorOptions.TablePrefix = classAttribute.Value.Trim().TrimStart('"').TrimEnd('"');
                    }
                    break;

                //[CodeGeneratorIgnorePrefix("public")]
                case "codegeneratorignoreprefix":
                    if (!string.IsNullOrEmpty(classAttribute.Value?.TrimStart('"').TrimEnd('"')))
                    {
                        generatorOptions.IgnorePrefix = classAttribute.Value.Trim().TrimStart('"').TrimEnd('"');
                    }
                    break;

                //[CodeGeneratorTargetFramwork("public")]
                case "codegeneratortargetframwork":
                    if (!string.IsNullOrEmpty(classAttribute.Value?.TrimStart('"').TrimEnd('"')))
                    {
                        generatorOptions.TargetFramwork = classAttribute.Value.Trim().TrimStart('"').TrimEnd('"');
                    }
                    break;

                //[CodeGeneratorBaseNameSpace("public")]
                case "codegeneratorbasenamespace":
                    if (!string.IsNullOrEmpty(classAttribute.Value?.TrimStart('"').TrimEnd('"')))
                    {
                        generatorOptions.BaseNameSpace = classAttribute.Value.Trim().TrimStart('"').TrimEnd('"');
                    }
                    break;

                //[CodeGeneratorIsOverride(true)]
                case "codegeneratorisoverride":
                    if (!string.IsNullOrEmpty(classAttribute.Value?.TrimStart('"').TrimEnd('"')))
                    {
                        generatorOptions.IsOverride = bool.Parse(classAttribute.Value.Trim().TrimStart('"').TrimEnd('"'));
                    }
                    break;

                //[CodeGeneratorBaseProjectPath("public")]
                case "codegeneratorbaseprojectpath":
                    if (!string.IsNullOrEmpty(classAttribute.Value?.TrimStart('"').TrimEnd('"')))
                    {
                        generatorOptions.BaseProjectPath = classAttribute.Value.Trim().TrimStart('"').TrimEnd('"');
                    }
                    break;

                //[CodeGeneratorIsPublished(true)]
                case "codegeneratorispublished":
                    if (!string.IsNullOrEmpty(classAttribute.Value?.TrimStart('"').TrimEnd('"')))
                    {
                        generatorOptions.IsPublished = bool.Parse(classAttribute.Value.Trim().TrimStart('"').TrimEnd('"'));
                    }
                    break;

                //[CodeGeneratorWarshipVersion("1.0.0.0")]
                case "codegeneratorwarshipversion":
                    if (!string.IsNullOrEmpty(classAttribute.Value?.TrimStart('"').TrimEnd('"')))
                    {
                        generatorOptions.WarshipVersion = classAttribute.Value.Trim().TrimStart('"').TrimEnd('"');
                    }
                    break;
                }
            }
            generatorOptions.Check();
            return(generatorOptions);
        }