コード例 #1
0
        protected override IStream <TOut> CreateOutputStream(LookupEntityFrameworkCoreArgs <TIn, TEntity, TCtx, TOut, TKey> args)
        {
            var matchingS = args.InputStream.Observable.CombineWithLatest(args.DbContextStream.Observable.Map(ctx =>
            {
                return(new EfMatcher <TIn, TEntity, TCtx, TKey>(new EfMatcherConfig <TIn, TEntity, TCtx, TKey>
                {
                    Context = ctx,
                    CreateIfNotFound = args.CreateIfNotFound,
                    DefaultDatasetCriteria = args.DefaultCriteria,
                    LeftKeyExpression = args.GetLeftStreamKey,
                    RightKeyExpression = args.GetEntityStreamKey,
                    MinCacheSize = args.CacheSize,
                    GetFullDataset = args.GetFullDataset,
                    IncludeInstruction = args.IncludeInstruction
                }));
            }), (elt, matcher) => new { Element = elt, Matcher = matcher }, true)
                            .Map(i =>
            {
                TEntity entity = default(TEntity);
                this.ExecutionContext.InvokeInDedicatedThread(i.Matcher.Context, () => entity = i.Matcher.GetMatch(i.Element));
                return(args.ResultSelector(i.Element, entity));
            });

            return(base.CreateUnsortedStream(matchingS));
        }
コード例 #2
0
        protected override IStream <TOut> CreateOutputStream(LookupEntityFrameworkCoreArgs <TIn, TEntity, TCtx, TOut> args)
        {
            var matcher   = new EfMatcher <TIn, TEntity, TCtx>(args.Match, args.CacheSize);
            var matchingS = args.InputStream.Observable.CombineWithLatest(args.DbContextStream.Observable, (elt, ctx) => new { Element = elt, DbContext = ctx }, true)
                            .Map(i => args.ResultSelector(i.Element, matcher.GetMatch(i.DbContext, i.Element)));

            return(base.CreateUnsortedStream(matchingS));
        }
コード例 #3
0
 public LookupEntityFrameworkCoreStreamNode(string name, LookupEntityFrameworkCoreArgs <TIn, TEntity, TCtx, TOut, TKey> args) : base(name, args)
 {
 }