RuleValueComparisonAttribute Class
Defines a validation rule that demands the target property’s value satisfy a specified condition.
Namespace: DevExpress.Persistent.Validation
Assembly: DevExpress.Persistent.Base.v24.1.dll
NuGet Package: DevExpress.Persistent.Base
Declaration
[AttributeUsage(AttributeTargets.Property, AllowMultiple = true)]
public class RuleValueComparisonAttribute :
RuleBaseAttribute,
IRuleValueComparisonProperties,
IRulePropertyValueProperties,
IRuleCollectionPropertyProperties,
IRuleBaseProperties,
IRuleSupportsCollectionAggregatesProperties
Remarks
Apply this attribute to a business class property to define a validation rule that will check whether this property’s value satisfies a specified condition. Use the operatorType parameter to specify the operator type that must be used when comparing values. The available values of this parameter are the ValueComparisonType enumeration values. Here they are:
- Equals
- GreaterThan
- GreaterThanOrEqual
- LessThan
- LessThanOrEqual
- NotEquals
Use the rightOperand parameter to specify the value to be compared with the target property’s value.
When applying this attribute, use common parameters that are inherited from the RuleBaseAttribute class, in addition to the specific parameters.
Note
The RuleValueComparisonAttribute can be applied to properties of value types. You can also use it with collections for which the TargetCollectionAggregate parameter is specified: Collection Validation: Aggregate Functions.
To compare other type properties, use RuleStringComparisonAttribute and RuleCriteriaAttribute.
[RuleValueComparison("",DefaultContexts.Save, ValueComparisonType.GreaterThan, "12/12/05")]
public virtual DateTime StartDate { get; set; }
//...
// Make sure that you use options.UseChangeTrackingProxies() in your DbContext settings.
The attribute constructor above expects a constant value as the rightOperand parameter. To refer to a property of the current object (or to compare with a calculated expression), set the mode parameter to ParametersMode.Expression using the following constructor.
[RuleValueComparison("", DefaultContexts.Save, ValueComparisonType.GreaterThan,
"OrderDateTime", ParametersMode.Expression)]
The rule generated by the RuleValueComparisonAttribute will be loaded to the Application Model‘s IModelValidationRules node. So, you can customize this rule via the Model Editor. In addition, you can create new rules in the Model Editor as well. This is helpful when you need to add a rule to a property which is implemented in a base class provided by a third party library. For details, refer to the Implement Property Value Validation topic.
You can see examples of using the RuleValueComparison and other validation attributes in the Validation section of the FeatureCenter demo. This demo is located in the %PUBLIC%\Documents\DevExpress Demos 24.1\Components\XAF\FeatureCenter.NETFramework.XPO folder, by default.