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(); }
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}”导入完毕"); }