示例#1
0
        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);
            }
        }
示例#2
0
 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;
 }