xSQL.Schema.SqlServer.Filter Namespace : EntityFilter Class |
'Declaration Public NotInheritable Class EntityFilter Implements xSQL.Schema.Core.IKeyedEntity(Of SqlEntityTypeEnum), IEntityFilterEvaluator
public sealed class EntityFilter : xSQL.Schema.Core.IKeyedEntity<SqlEntityTypeEnum>, IEntityFilterEvaluator
public __gc __sealed class EntityFilter : public xSQL.Schema.Core.IKeyedEntity<SqlEntityTypeEnum>, IEntityFilterEvaluator
An entity filter is created for a specific object type. It contains one or multiple EntityFilterGroup groups combined with an operator. Depending on the GroupOperator, the entity filter can perform one of the followings:
Entity filters are supported on almost all database objects with a few exceptions. To check whether the entity filter can be applied to a particular object type, call the EntityFilterManager.IsEntityTypeSupported method.
Important: Version 10 of the schema compare API includes an important change to the entity filters: the entity filters are used primarily to exclude database objects. If you wish to include an object, which you can still do, the criteria should be "translated" to exclusionary criteria for other objects in the database, using the negate filters in most cases.
To EXCLUDE, for example, the Employee table, use the following filter condition: EntityNameFilterCondition("Employee", EntityFilterConditionTypeEnum.EqualsTo, group)
To INCLUDE the Employee table, which is the same as excluding all but the Employee table, use the following filter condition: EntityNameFilterCondition("Employee", EntityFilterConditionTypeEnum.DifferentFrom, group)
A filter can have multiple criteria. If the intention is to exclude objects, the criteria are usually combined with the OR operator. If the intention is to include objects, the negate criteria are usually combined with the AND operator.
The group property EntityFilterGroup.IncludeMatches is no longer supported.
EntityFilterManager filterManager; EntityFilter viewFilter; EntityFilter procedureFilter; EntityFilter functionFilter; EntityFilterGroup group; // create the filter manager filterManager = new EntityFilterManager(EntityFilterExclusionTypeEnum.ExcludeAlways); /* * Create a view filter that contains two conditions: * - 1st condition excludes views the name of which start with tmp * - 2nd condition excludes views the name of which end with temp * * Conditions are applied to the view name, therefore they are created as EntityNameFilterCondition objects. * */ // create the view filter viewFilter = new EntityFilter(SqlEntityTypeEnum.View); // create a group for the filter conditions group = new EntityFilterGroup(viewFilter); group.ConditionOperator = EntityFilterOperatorEnum.OR; viewFilter.Groups.Add(group); // add conditions group.Conditions.Add(new EntityNameFilterCondition("temp", EntityFilterConditionTypeEnum.StartingWith, group)); group.Conditions.Add(new EntityNameFilterCondition("tmp", EntityFilterConditionTypeEnum.EndingWith, group)); // register the filter filterManager.Filters.Add(viewFilter); /* * Create a procedure filter that excludes all databases procedures, except for spSales and spEmployees. * - The group operator is AND * - The condition used is DifferentFrom * * It is important to remember that a filter excludes objects that match the filter conditions, * so to include spSales and spEmployees, we use the DifferentFrom criteria. * */ // create the procedure filter procedureFilter = new EntityFilter(SqlEntityTypeEnum.StoredProcedure); // create a group for the filter conditions group = new EntityFilterGroup(procedureFilter); group.ConditionOperator = EntityFilterOperatorEnum.And; procedureFilter.Groups.Add(group); // add conditions group.Conditions.Add(new EntityNameFilterCondition("spSales", EntityFilterConditionTypeEnum.DifferentFrom, group)); group.Conditions.Add(new EntityNameFilterCondition("spEmployees", EntityFilterConditionTypeEnum.DifferentFrom, group)); // register the filter filterManager.Filters.Add(procedureFilter); /* * Create a function filter that contains two conditions: * - 1st condition excludes user-defined functions that belong to the schema Sales * - 2nd condition excludes user-defined functions that belong to the schema HumanResources. * * Conditions in this case are applied to the schema, so they are created as EntitySchemaFilterCondition objects. * Since a function can satisfy either one of the conditions, the group filter combines them with the OR operator. * */ // create the function filter functionFilter = new EntityFilter(SqlEntityTypeEnum.UserDefinedFunction); // create a group for the filter conditions group = new EntityFilterGroup(functionFilter); group.ConditionOperator = EntityFilterOperatorEnum.OR; functionFilter.Groups.Add(group); // add conditions group.Conditions.Add(new EntitySchemaFilterCondition("Sales", EntityFilterConditionTypeEnum.EqualsTo, group)); group.Conditions.Add(new EntitySchemaFilterCondition("HumanResources", EntityFilterConditionTypeEnum.EqualsTo, group)); // register the filter filterManager.Filters.Add(functionFilter); // set the schema compare entity filters comparer.EntityFilterManager = filterManager;
System.Object
xSQL.Schema.SqlServer.Filter.EntityFilter
Target Platforms: Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows Server 2008 (Server Core not supported), Windows Server 2008 R2 (Server Core supported with SP1 or later), Windows Server 2003 SP2