Пример #1
0
    public IDbSetConfigurationQueryOptions <TContext, TProperty> ConfigureSet <TProperty>(
        Expression <Func <TContext, DbSet <TProperty> > > dbSetExpression,
        string fieldName    = "",
        SetOption setOption = SetOption.IncludeAsFieldAndChild,
        Expression <Func <TProperty, bool> >?defaultFilter = null)
        where TProperty : class
    {
        var dbSetConfiguration = new DbSetConfiguration
        {
            Type             = typeof(TProperty),
            SetOption        = setOption,
            FieldName        = fieldName,
            FilterExpression = defaultFilter
        };

        ((List <IDbSetConfiguration>)DbSetConfigurations).Add(dbSetConfiguration);

        return(new DbSetConfigurationQueryOptions <TContext, TProperty>(this, dbSetConfiguration));
    }
        /// <summary>
        /// Adds a DbSet Adapter
        /// </summary>
        /// <typeparam name="TModel">Model Type</typeparam>
        /// <typeparam name="TEntity">Entity Type</typeparam>
        /// <typeparam name="TContext">Context Type</typeparam>
        /// <param name="container">container</param>
        /// <param name="configCallback">callback for configuration</param>
        public static void AddDbSetAdapter <TModel, TEntity, TContext>(this IWindsorContainer container, Action <DbSetConfiguration <TEntity> > configCallback = null)
            where TEntity : class
            where TContext : DbContext
        {
            Arguments.NotNull(container, nameof(container));

            var component = Component.For <ISearchableModelSet <TModel> >()
                            .ImplementedBy <DbSetAdapter <TModel, TEntity, TContext> >()
                            .LifestyleTransient();

            if (configCallback != null)
            {
                var config = new DbSetConfiguration <TEntity>();

                configCallback(config);

                component = component.DependsOn(Dependency.OnValue <IDbSetConfiguration <TEntity> >(config));
            }

            container.Register(component);
        }
Пример #3
0
    public IQueryOptions <TContext> AddProjection <TOutput>(string name, Func <TContext, IQueryable <TOutput> > projectionFunction)
        where TOutput : class
    {
        var outputType = typeof(TOutput);

        if (!Regex.IsMatch(outputType.Name, ClassNamePattern))
        {
            throw new GraphityException($"Projections must use a concrete class. Anonymous types are not allowed. Names must match {ClassNamePattern}");
        }

        var dbSetConfiguration = new DbSetConfiguration
        {
            Type               = typeof(TOutput),
            SetOption          = SetOption.IncludeAsFieldAndChild,
            FieldName          = name,
            ProjectionFunction = projectionFunction
        };

        ((List <IDbSetConfiguration>)DbSetConfigurations).Add(dbSetConfiguration);

        return(this);
    }
 internal DbSetConfigurationQueryOptions(QueryOptions <TContext> options, DbSetConfiguration dbSetConfiguration)
 {
     _options            = options;
     _dbSetConfiguration = dbSetConfiguration;
 }
Пример #5
0
 internal PropertyConfigurationQueryOptions(DbSetConfigurationQueryOptions<TContext, TEntity> options, DbSetConfiguration dbSetConfiguration, PropertyConfiguration propertyConfiguration)
 {
     _options = options;
     _dbSetConfiguration = dbSetConfiguration;
     _propertyConfiguration = propertyConfiguration;
 }