protected override IStream <TOut> CreateOutputStream(ThroughEntityFrameworkCoreArgs <TInEf, TCtx, TIn, TOut> args) { var dbContextStream = args.DbContextStream.Observable.First(); var ret = args.SourceStream.Observable .Chunk(args.BatchSize) .CombineWithLatest(dbContextStream, (i, c) => new { Context = c, Items = i.Select(j => new Tuple <TIn, TInEf>(j, args.GetEntity(j))).ToList() }, true) .Do(i => ProcessBatch(i.Items, i.Context, args.BulkLoadMode)) .FlatMap(i => PushObservable.FromEnumerable(i.Items)) .Map(i => args.GetOutput(i.Item1, i.Item2)); return(base.CreateUnsortedStream(ret)); }
public ThroughEntityFrameworkCoreStreamNode(string name, ThroughEntityFrameworkCoreArgs <TInEf, TCtx, TIn, TOut> args) : base(name, args) { }