public override void CreateCode()
        {
            StringBuilder result = new StringBuilder();

            result.AppendLine(CodeContent);
            try
            {
                if (null == ProjectContainer.DomainEntity)
                {
                    throw new Exception("Entity2Code DomainEntity Project Can not be Find");
                }
                string path = Path.Combine(ProjectContainer.DomainEntity.ToDirectory(), _entity.Entity + ".cs");
                if (File.Exists(path) == false)
                {
                    throw new Exception("Entity2Code DomainEntity Project Can not Find ProjectItem " + _entity.Entity + ".cs");
                }
                if (SolutionCommon.infrastryctType == InfrastructType.DbFirst)
                {
                    using (StreamReader reader = new StreamReader(path))
                    {
                        while (reader.Peek() != -1)
                        {
                            string line = reader.ReadLine();
                            if (line.IndexOf("get") != -1 && line.IndexOf("set") != -1 && line.IndexOf("virtual") == -1)
                            {
                                result.AppendLine("        [DataMember]");
                                result.AppendLine(line);
                            }
                        }
                    }
                }
                else
                {
                    Table tb = CodeFirstLogic.GetTables().GetTable(_entity.Entity, CodeFirstTools.SchemaName);
                    foreach (Column clm in tb.Columns)
                    {
                        result.AppendLine("        [DataMember]");
                        result.AppendLine(string.Format("        public {0}{1} {2} {3}", clm.PropertyType, CodeFirstTools.CheckNullable(clm), clm.PropertyName, "{get; set; }"));
                    }
                }
                result.AppendLine("   }");
                result.AppendLine("}");

                string targetPath = ModelPathConverter.GetCodePath(_consType, IsOverWrite, _entity);
                using (FileStream create = new FileStream(targetPath, FileMode.OpenOrCreate))
                {
                    byte[] buffer = Encoding.Default.GetBytes(result.ToString());
                    create.Write(buffer, 0, buffer.Length);
                }
                BuildResult = ProjectContainer.Data2Object.AddFromFile(targetPath);

                base.CreateCode();
            }
            catch (Exception ex)
            {
                MsgBoxHelp.ShowError("创建代码出现异常:", ex);
            }
        }
示例#2
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();
        }
        public override void CreateCode()
        {
            try
            {
                string path = string.Empty;
                if (null == _entity)
                {
                    path = ModelPathConverter.GetCodePath(_consType, IsOverWrite);
                }
                else
                {
                    path = ModelPathConverter.GetCodePath(_consType, IsOverWrite, _entity);
                }
                using (FileStream create = new FileStream(path, FileMode.OpenOrCreate))
                {
                    byte[] buffer = Encoding.Default.GetBytes(CodeContent.ToString());
                    create.Write(buffer, 0, buffer.Length);
                }

                if (null == BuildTaget)
                {
                    throw new Exception("Entity2Code Code Taget Lost");
                }
                Project prj = BuildTaget as Project;
                if (null == prj)
                {
                    throw new Exception("Entity2Code Code Taget Argment Error");
                }
                BuildResult = prj.AddFromFile(path);
                base.CreateCode();
            }
            catch (Exception ex)
            {
                MsgBoxHelp.ShowError("创建代码异常了", ex);
            }
        }