Пример #1
0
    public Func <T, bool> GetInMemoryFilter <T>(bool userInterface)
        where T : Entity
    {
        using (userInterface ? ExecutionMode.UserInterface() : null)
        {
            EntityEvents <T>?ee = (EntityEvents <T>?)entityEvents.TryGetC(typeof(T));
            if (ee == null)
            {
                return(a => true);
            }

            Func <T, bool>?result = null;
            foreach (var item in ee.OnFilterQuery().NotNull())
            {
                if (item.InMemoryFunction == null)
                {
                    throw new InvalidOperationException("FilterQueryResult with InDatabaseExpresson '{0}' has no equivalent InMemoryFunction"
                                                        .FormatWith(item.InDatabaseExpresson.ToString()));
                }

                result = CombineFunc(result, item.InMemoryFunction);
            }

            if (result == null)
            {
                return(a => true);
            }

            return(result);
        }
    }
Пример #2
0
    internal FilterQueryResult <T>?OnFilterQuery <T>()
        where T : Entity
    {
        AssertAllowed(typeof(T), inUserInterface: false);

        EntityEvents <T>?ee = (EntityEvents <T>?)entityEvents.TryGetC(typeof(T));

        if (ee == null)
        {
            return(null);
        }

        FilterQueryResult <T>?result = null;

        foreach (var item in ee.OnFilterQuery())
        {
            result = CombineFilterResult(result, item);
        }

        return(result);
    }
Пример #3
0
    public Expression <Func <T, bool> >?GetInDatabaseFilter <T>()
        where T : Entity
    {
        EntityEvents <T>?ee = (EntityEvents <T>?)entityEvents.TryGetC(typeof(T));

        if (ee == null)
        {
            return(null);
        }

        Expression <Func <T, bool> >?result = null;

        foreach (var item in ee.OnFilterQuery().NotNull())
        {
            result = CombineExpr(result, item.InDatabaseExpresson);
        }

        if (result == null)
        {
            return(null);
        }

        return(result);
    }