private async Task <IEnumerable <ImportingJobDescriptor> > HarvestManifestAsync(IFeatureInfo feature, string path) { var manifestPath = Path.Combine("Areas", feature.Id, path); var manifestFile = _environment.ContentRootFileProvider.GetFileInfo(manifestPath); if (manifestFile == null || manifestFile is NotFoundFileInfo) { return(new ImportingJobDescriptor[] { }); } using (var stream = manifestFile.CreateReadStream()) { var manifest = await _xaml.LoadAsync <SeedManifest>(stream); var dataSources = manifest.DataSources; var jobs = new List <ImportingJobDescriptor>(); foreach (var ds in dataSources) { foreach (var importEntity in ds.Mappings) { var job = new ImportingJobDescriptor( true, feature, ds, importEntity); jobs.Add(job); } } return(jobs); } }
public async Task ImportAsync(ImportingJobDescriptor descriptor) { ShellScope.AddDeferredTask(async defferedTaskContext => { using (var tx = _transactionManager.BeginTransaction()) { var importTask = await this.CreateTaskAsync(descriptor); var context = new ImportingTaskContext(defferedTaskContext.ServiceProvider, _environment.ContentRootFileProvider); await this.DoImportAsync(importTask, context); await tx.CommitAsync(); } }); await Task.CompletedTask; }