Beispiel #1
0
        public static void Create(bool overWrite)
        {
            StringBuilder build = new StringBuilder();

            //Infrustruture
            if (ProjectContainer.Infrastructure == null || overWrite)
            {
                ProjectContainer.Infrastructure = SolutionCommon.Dte.AddClassLibrary(SolutionCommon.Infrastructure, true);
            }
            ProjectContainer.Infrastructure.AddAdoNetEntityDataModel(SolutionCommon.ProjectName);
            ProjectContainer.Infrastructure.ProjectItems.Find(SolutionCommon.ProjectName + ".tt", true).Delete();
            string contextPath = SolutionCommon.ProjectName + ".Context.tt";

            ProjectContainer.Infrastructure.ProjectItems.Find(contextPath, true).Remove();
            ProjectContainer.Infrastructure.AddFromFile(Path.Combine(ProjectContainer.Infrastructure.ToDirectory(), contextPath)).Name = SolutionCommon.ProjectName + "Context.tt";
            ProjectContainer.Infrastructure.Save();
            ProjectItem contextItem = ProjectContainer.Infrastructure.ProjectItems.Find(SolutionCommon.ProjectName + "Context.cs", true);
            EditPoint   editPoint   = contextItem.FileCodeModel.CodeElements.Item(1).StartPoint.CreateEditPoint();

            editPoint.Insert(string.Format("using {0};\r\n", SolutionCommon.DomainEntity));
            //Extention
            CodeStaticManager codeManager = new CodeStaticManager(ConstructType.DbContextExtensions);

            codeManager.BuildTaget = new StringCodeArgment()
            {
                Folder = "Extention", Name = "DbContextExtensions.cs", Target = ProjectContainer.Infrastructure
            };
            codeManager.CreateCode();
            //Unit

            using (StreamReader reader = new StreamReader(Path.Combine(ProjectContainer.Infrastructure.ToDirectory(), SolutionCommon.ProjectName + "Context.cs")))
            {
                string ContextName = string.Empty;
                while (reader.Peek() != -1)
                {
                    string temp = reader.ReadLine();
                    if (temp.IndexOf("class") != -1)
                    {
                        temp        = temp.Substring(25);
                        ContextName = temp.Split(':')[0].Trim();
                        ModelContainer.Regist("$ContextName$", ContextName, "上下文名称");
                        break;
                    }
                }
            }

            codeManager            = new CodeStaticManager(ConstructType.ContextUnit);
            codeManager.BuildTaget = new StringCodeArgment()
            {
                Name = SolutionCommon.ProjectName + "ContextUnit.cs", Encode = Encoding.Default, Target = ProjectContainer.Infrastructure
            };
            codeManager.CreateCode();
        }
Beispiel #2
0
        /// <summary>
        /// 创建领域层实体
        /// </summary>
        public static void Create(bool overWrite)
        {
            if (ProjectContainer.DomainEntity == null || overWrite)
            {
                ProjectContainer.DomainEntity = SolutionCommon.Dte.AddClassLibrary(SolutionCommon.DomainEntity, true);
            }

            CodeStaticManager codeManager = new CodeStaticManager(ConstructType.Entities);

            codeManager.BuildTaget = new StringCodeArgment()
            {
                Encode = Encoding.Default, Name = "Entities.tt", Target = ProjectContainer.DomainEntity
            };
            codeManager.CreateCode();

            ProjectContainer.DomainEntity.ProjectItems.Find("Entities.cs", true).Delete();
            ProjectContainer.DomainEntity.Save();
        }
Beispiel #3
0
        public static void CreateCodeFirst(bool overWrite = true)
        {
            if (ProjectContainer.Infrastructure == null)
            {
                ProjectContainer.Infrastructure = SolutionCommon.Dte.AddClassLibrary(SolutionCommon.Infrastructure, true);
            }
            CodeStaticManager codeManager = new CodeStaticManager(ConstructType.DbContextExtensions);

            codeManager.BuildTaget = new StringCodeArgment()
            {
                Folder = "Extention", Name = "DbContextExtensions.cs", Target = ProjectContainer.Infrastructure
            };
            codeManager.CreateCode();

            CodeFirstLogic.WriteConfigFies(overWrite);

            Tables tables = CodeFirstLogic.GetTables();

            CodeBuilderContainer.DBContextBuilder.Clear();
            foreach (Table tb in tables)
            {
                CodeAppendManager appendManager = new CodeAppendManager(ConstructType.DBContext, new TemplateEntity()
                {
                    Entity = tb.Name, Data2Obj = tb.NameHumanCase
                });
                appendManager.BuildTaget = CodeBuilderContainer.DBContextBuilder;
                appendManager.CreateCode();
            }
            ModelContainer.Regist("$ContextName$", CodeFirstTools.DbContextName, "上下文名称");
            codeManager = new CodeStaticManager(ConstructType.DBContext);

            codeManager.BuildTaget = new StringCodeArgment()
            {
                Name = CodeFirstTools.DbContextName + ".cs", Target = ProjectContainer.Infrastructure
            };
            codeManager.CreateCode();

            codeManager            = new CodeStaticManager(ConstructType.ContextUnit);
            codeManager.BuildTaget = new StringCodeArgment()
            {
                Name = CodeFirstTools.DbContextName + "Unit.cs", Encode = Encoding.Default, Target = ProjectContainer.Infrastructure
            };
            codeManager.CreateCode();
        }
Beispiel #4
0
        /// <summary>
        /// 创建DTO实体的代码
        /// </summary>
        /// <param name="overWrite">是否重写</param>
        public static void Create(bool overWrite)
        {
            if (ProjectContainer.Data2Object == null)
            {
                ProjectContainer.Data2Object = SolutionCommon.Dte.AddClassLibrary(SolutionCommon.Data2Object);
            }
            else
            {
                if (overWrite)
                {
                    ProjectContainer.Data2Object.Delete();
                    ProjectContainer.Data2Object = SolutionCommon.Dte.AddClassLibrary(SolutionCommon.Data2Object);
                }
            }

            List <TemplateEntity> entitys = DomainEntityLogic.GetEntitys(false);

            CodeBuilderContainer.ProfileBuilder.Clear();
            for (int i = 0; i < entitys.Count; i++)
            {
                // _work.ReportProgress((int)((i + 1) * 100 / entitys.Length), string.Format("添加实体类-{0}-的代码", fileEntity));
                TemplateEntity        tmpEntity   = entitys[i];
                Data2ObjCerateManager codeManager = new Data2ObjCerateManager(ConstructType.Data2Obj, tmpEntity);
                codeManager.IsOverWrite = overWrite;
                codeManager.BuildTaget  = ProjectContainer.Data2Object;
                codeManager.CreateCode();

                CodeAppendManager appendManager = new CodeAppendManager(ConstructType.Profile, tmpEntity);
                appendManager.BuildTaget = CodeBuilderContainer.ProfileBuilder;
                appendManager.CreateCode();
            }

            CodeStaticManager staticManager = new CodeStaticManager(ConstructType.Profile);

            //Profile

            ModelPathConverter.GetCodePath(ConstructType.Profile);
            staticManager.BuildTaget = new StringCodeArgment()
            {
                Folder = "Profile", Name = SolutionCommon.ProjectName + "Profile.cs", Target = ProjectContainer.Data2Object
            };
            staticManager.CreateCode();
        }
Beispiel #5
0
        public static void CreateFrame(bool overWrite)
        {
            if (ProjectContainer.Service == null)
            {
                ProjectContainer.Service = SolutionCommon.Dte.AddWebService(SolutionCommon.Service, true);
            }

            if (ProjectContainer.Service.ProjectItems.Find("web.config") != null)
            {
                ProjectContainer.Service.ProjectItems.Find("web.config").Delete();
            }
            if (SolutionCommon.infrastryctType == InfrastructType.DbFirst)
            {
                using (StreamReader reader = new StreamReader(Path.Combine(ProjectContainer.Infrastructure.ToDirectory(), "app.config")))
                {
                    while (reader.Peek() != -1)
                    {
                        string temp = reader.ReadLine();
                        if (temp.IndexOf(ModelContainer.Resolve("$ContextName$")) != -1)
                        {
                            ModelContainer.Regist("$ConnectionString$", temp, "数据库连接字符串");
                            break;
                        }
                    }
                }
            }
            else
            {
                string str = string.Empty;
                if (CodeFirstTools.DataType == "MicrosoftSqlServer")
                {
                    str = "<add name=\"" + CodeFirstTools.DbContextName + "\" providerName=\"" + CodeFirstTools.ProviderName + "\" connectionString=\"" + CodeFirstTools.ConnectionString + ";MultipleActiveResultSets=True;Pooling=True;\"/>";
                }
                else
                {
                    str = "<add name=\"" + CodeFirstTools.DbContextName + "\" providerName=\"Oracle.DataAccess.Client\" connectionString=\"" + CodeFirstTools.ConnectionString + "\"/>";
                }
                ModelContainer.Regist("$ConnectionString$", str, "数据库连接字符串");
            }

            if (SolutionCommon.infrastryctType == InfrastructType.CodeFirst)
            {
                ModelContainer.Regist("$DBSchemaApp$", string.Format("<add key=\"DBSchema\" value=\"{0}\"/>", CodeFirstTools.SchemaName), "数据库命名空间");
            }
            else
            {
                ModelContainer.Regist("$DBSchemaApp$", "", "数据库命名空间");
            }
            CodeStaticManager staticManager = new CodeStaticManager(ConstructType.WebConfig);

            staticManager.BuildTaget = new StringCodeArgment()
            {
                Encode = Encoding.UTF8, Name = "web.config", Target = ProjectContainer.Service
            };
            staticManager.CreateCode();

            //ServiceBehinde
            string behindCode = string.Format("<%@ ServiceHost Language=\"C#\" Debug=\"true\" Service=\"{1}.{0}Service\" CodeBehind=\"{0}Service.svc.cs\" %>", SolutionCommon.ProjectName, SolutionCommon.Service);

            ProjectContainer.Service.AddFromFileString(behindCode, SolutionCommon.ProjectName + "Service.svc", Encoding.Default);


            //AttachDataSignBehavior
            staticManager            = new CodeStaticManager(ConstructType.AttachDataSignBehavior);
            staticManager.BuildTaget = new StringCodeArgment()
            {
                Folder = "InstanceProviders", Name = "AttachDataSignBehavior.cs", Target = ProjectContainer.Service
            };
            staticManager.CreateCode();

            //UnityInstanceProvider
            staticManager            = new CodeStaticManager(ConstructType.UnityInstanceProvider);
            staticManager.BuildTaget = new StringCodeArgment()
            {
                Folder = "InstanceProviders", Name = "UnityInstanceProvider.cs", Target = ProjectContainer.Service
            };
            staticManager.CreateCode();

            //UnityInstanceProviderServiceBehavior
            staticManager            = new CodeStaticManager(ConstructType.UnityInstanceProviderServiceBehavior);
            staticManager.BuildTaget = new StringCodeArgment()
            {
                Folder = "InstanceProviders", Name = "UnityInstanceProviderServiceBehavior.cs", Target = ProjectContainer.Service
            };
            staticManager.CreateCode();

            //AssemblyInfo
            string        assemblyInfoPath = Path.Combine(ProjectContainer.Service.ToDirectory(), "Properties", "AssemblyInfo.cs");
            StringBuilder build            = FileOprateHelp.ReadFile(assemblyInfoPath);

            build.AppendLine("[assembly: log4net.Config.XmlConfigurator(Watch = true)]");//日志监视
            FileOprateHelp.SaveFile(build.ToString(), assemblyInfoPath);

            SolutionCommon.Dte.SetStartup(ProjectContainer.Service);
        }
Beispiel #6
0
        public static void CreateCode(bool overWrite)
        {
            if (ProjectContainer.Service == null)
            {
                throw new Exception("Entity2Code Service Project Can not be Find");
            }

            if (overWrite)
            {
                CodeBuilderContainer.ServiceBuilder.Clear();
                CodeBuilderContainer.IServiceBuilder.Clear();
                CodeBuilderContainer.ContainBuilder.Clear();
                List <TemplateEntity> entitys = DomainEntityLogic.GetEntitys(false);
                for (int i = 0; i < entitys.Count; i++)
                {
                    CodeAppendManager codeManager = new CodeAppendManager(ConstructType.Service, entitys[i]);
                    codeManager.BuildTaget = CodeBuilderContainer.ServiceBuilder;
                    codeManager.CreateCode();

                    codeManager            = new CodeAppendManager(ConstructType.IService, entitys[i]);
                    codeManager.BuildTaget = CodeBuilderContainer.IServiceBuilder;
                    codeManager.CreateCode();

                    codeManager            = new CodeAppendManager(ConstructType.Container, entitys[i]);
                    codeManager.BuildTaget = CodeBuilderContainer.ContainBuilder;
                    codeManager.CreateCode();
                }
            }

            CodeStaticManager staticManager = new CodeStaticManager(ConstructType.Service);

            //Service
            staticManager.BuildTaget = new StringCodeArgment()
            {
                Name = SolutionCommon.ProjectName + "Service.svc.cs", Target = ProjectContainer.Service
            };
            staticManager.CreateCode();

            //IService
            staticManager            = new CodeStaticManager(ConstructType.IService);
            staticManager.BuildTaget = new StringCodeArgment()
            {
                Name = "I" + SolutionCommon.ProjectName + "Service.cs", Target = ProjectContainer.Service
            };
            staticManager.CreateCode();

            //Container
            if (SolutionCommon.infrastryctType == InfrastructType.CodeFirst)
            {
                ModelContainer.Regist("$DBAppContent$", " string db= System.Configuration.ConfigurationManager.AppSettings[\"DBSchema\"];", "获取数据库连接字符串的函数内容");
                ModelContainer.Regist("$DBConstr$", "new InjectionConstructor(db)", "注册上下文的函数内容");
            }
            else
            {
                ModelContainer.Regist("$DBAppContent$", "", "获取数据库连接字符串的函数内容");
                ModelContainer.Regist("$DBConstr$", "", "注册上下文的函数内容");
            }
            staticManager            = new CodeStaticManager(ConstructType.Container);
            staticManager.BuildTaget = new StringCodeArgment()
            {
                Folder = "InstanceProviders", Name = "Container.cs", Target = ProjectContainer.Service
            };
            staticManager.CreateCode();
        }