示例#1
0
        public async void Save()
        {
            if (!CanSave)
            {
                Helper.Notify("模板信息验证失败", NotificationType.Warning);
                return;
            }

            for (int i = 0; i < Templates.Count; i++)
            {
                Templates[i].Order = i + 1;
            }

            CodeTemplateInputDto[]           dtos   = Templates.Select(m => m.MapTo <CodeTemplateInputDto>()).ToArray();
            OperationResult <CodeTemplate[]> result = null;
            await _provider.ExecuteScopedWorkAsync(async provider =>
            {
                IDataContract contract = provider.GetRequiredService <IDataContract>();
                result = await contract.UpdateCodeTemplates(dtos);
            });

            Helper.Notify(result);
            if (!result.Succeeded)
            {
                return;
            }

            Init();
        }
示例#2
0
        private async Task ImportProject(string file)
        {
            string json = await File.ReadAllTextAsync(file);

            CodeProject proj = json.FromJsonString <CodeProject>();

            if (proj == null)
            {
                return;
            }

            await _provider.ExecuteScopedWorkAsync(async provider =>
            {
                IUnitOfWork unitOfWork = provider.GetUnitOfWork(true);
                IDataContract contract = provider.GetRequiredService <IDataContract>();
                CodeProject project    = await GetOrAddProject(contract, proj);
                foreach (var mod in proj.Modules)
                {
                    CodeModule module = await GetOrAddModule(contract, project.Id, mod);
                    foreach (var en in mod.Entities)
                    {
                        CodeEntity entity = await GetOrAddEntity(contract, module.Id, en);
                        foreach (var prop in en.Properties)
                        {
                            CodeProperty property = await GetOrAddProperty(contract, entity.Id, prop);
                        }

                        foreach (var fore in en.Foreigns)
                        {
                            CodeForeign foreign = await GetOrAddForeign(contract, entity.Id, fore);
                        }
                    }
                }

                foreach (CodeProjectTemplate projTpl in proj.ProjectTemplates)
                {
                    if (projTpl.Template == null)
                    {
                        continue;
                    }

                    CodeTemplate tpl = contract.CodeTemplates.FirstOrDefault(m => m.Name == projTpl.Template.Name);
                    if (tpl == null)
                    {
                        CodeTemplateInputDto dto = projTpl.Template.MapTo <CodeTemplateInputDto>();
                        dto.Id     = default;
                        var result = await contract.UpdateCodeTemplates(dto);
                        if (result.Succeeded)
                        {
                            tpl = result.Data[0];
                        }
                    }
                    projTpl.TemplateId = tpl.Id;
                    project.ProjectTemplates.Add(projTpl);
                }

                await unitOfWork.CommitAsync();
            });

            Init();
            Helper.Output($"文件“{file}”导入完毕");
        }