示例#1
0
 public MachineResource AddOrUpdateTenants(params TenantResource[] tenants)
 {
     foreach (var tenant in tenants)
     {
         TenantIds.Add(tenant.Id);
     }
     return(this);
 }
示例#2
0
        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            // Parametrize
            // Filters defined in OnModelCreating
            modelBuilder.Entity <FieldFilter>().HasQueryFilter(e => e.IsEnabled == Field);
            modelBuilder.Entity <PropertyFilter>().HasQueryFilter(e => e.IsEnabled == Property);
            modelBuilder.Entity <MethodCallFilter>().HasQueryFilter(e => e.Tenant == GetId());
            modelBuilder.Entity <ListFilter>().HasQueryFilter(e => TenantIds.Contains(e.Tenant));
            modelBuilder.Entity <PropertyChainFilter>().HasQueryFilter(e => e.IsEnabled == IndirectionFlag.Enabled);
            modelBuilder.Entity <PropertyMethodCallFilter>().HasQueryFilter(e => e.Tenant == IndirectionFlag.GetId());
            modelBuilder.Entity <MethodCallChainFilter>().HasQueryFilter(e => e.Tenant == GetFlag().GetId());
            modelBuilder.Entity <ComplexFilter>().HasQueryFilter(x => x.IsEnabled == Property && (Tenant + GetId() > 0));
            modelBuilder.Entity <ShortCircuitFilter>()
            .HasQueryFilter(x => !x.IsDeleted && (IsModerated == null || IsModerated == x.IsModerated));
            modelBuilder.Entity <PrincipalSetFilter>()
            .HasQueryFilter(p => Dependents.Any(d => d.PrincipalSetFilterId == p.Id));

            // Filters defined through EntityTypeConfiguration
            modelBuilder.ApplyConfiguration(new FieldConfiguration(this));
            modelBuilder.ApplyConfiguration(new PropertyConfiguration(this));
            modelBuilder.ApplyConfiguration(new MethodCallConfiguration(new DbContextWrapper(this)));
            modelBuilder.ApplyConfiguration(new PropertyChainConfiguration(new DbContextWrapper(this)));

            // Filters defined through methods (local/remote/extensions)
            ConfigureFilter(modelBuilder.Entity <LocalMethodFilter>());
            ConfigureFilterParams(modelBuilder.Entity <LocalMethodParamsFilter>(), this);
            Indirection.ConfigureFilter(modelBuilder.Entity <RemoteMethodParamsFilter>(), new DbContextWrapper(this));
            modelBuilder.Entity <ExtensionBuilderFilter>().BuilderFilter(this);
            new DbContextWrapper(this).ContextFilter(modelBuilder.Entity <ExtensionContextFilter>());
            SetDependentFilter(modelBuilder, this);

            // Inline
            modelBuilder.Entity <DbContextStaticMemberFilter>().HasQueryFilter(e => e.UserId != AdminId);
            modelBuilder.Entity <StaticMemberFilter>()
            .HasQueryFilter(b => b.IsEnabled == StaticMemberFilter.DefaultEnabled);
            var enabled = true;

            modelBuilder.Entity <LocalVariableFilter>().HasQueryFilter(e => e.IsEnabled == enabled);
            Indirection flag = null;

            modelBuilder.Entity <LocalVariableErrorFilter>().HasQueryFilter(e => e.IsEnabled == flag.Enabled);
            IncorrectFilter(modelBuilder.Entity <ParameterFilter>(), Tenant);

            // Multiple context used in filter
            modelBuilder.Entity <MultiContextFilter>()
            .HasQueryFilter(e => e.IsEnabled == Property && e.BossId == new IncorrectDbContext().BossId);
        }
示例#3
0
 public MachineResource ClearTenants()
 {
     TenantIds.Clear();
     return(this);
 }
示例#4
0
 public MachineResource RemoveTenant(TenantResource tenant)
 {
     TenantIds.Remove(tenant.Id);
     return(this);
 }