expressappframework-devexpress-dot-persistent-dot-base-5605bb83.md
Specifies the CriteriaOperator used to filter source data for a reference, collection, or enumeration property.
Namespace : DevExpress.Persistent.Base
Assembly : DevExpress.ExpressApp.v25.2.dll
NuGet Package : DevExpress.ExpressApp
[AttributeUsage(AttributeTargets.Property, Inherited = true, AllowMultiple = false)]
public sealed class DataSourceCriteriaPropertyAttribute :
ModelExportedValueAttribute
<AttributeUsage(AttributeTargets.Property, Inherited:=True, AllowMultiple:=False)>
Public NotInheritable Class DataSourceCriteriaPropertyAttribute
Inherits ModelExportedValueAttribute
You can apply a DataSourceCriteriaPropertyAttribute to a reference, collection, or enumeration property of a business class.
Use DataSourceCriteriaPropertyAttribute.DataSourceCriteriaProperty to specify the name of a property that contains the CriteriaOperator.
using DevExpress.Data.Filtering;
using DevExpress.Persistent.Base;
using DevExpress.Persistent.BaseImpl.EF;
// ...
[DefaultClassOptions]
public class Order : BaseObject {
[DataSourceCriteriaProperty(nameof(AccessoryCriteria))]
public virtual Accessory Accessory { get; set; }
public CriteriaOperator AccessoryCriteria {
get { return CriteriaOperator.FromLambda<Accessory>(a => a.IsGlobal == true); }
}
//For enum properties
[DataSourceCriteriaProperty(nameof(PendingConfirmedAndProcessingCriteria))]
public virtual OrderStatus Status { get; set; }
public CriteriaOperator PendingConfirmedAndProcessingCriteria
=> CriteriaOperator.FromLambda(o => o.Status==OrderStatus.Pending || o.Status==OrderStatus.Confirmed|| o.Status==OrderStatus.Processing);
public class Accessory : BaseObject {
public virtual bool IsGlobal { get; set; }
}
public enum OrderStatus {
Pending,
Confirmed,
Processing,
Shipped,
Delivered,
Canceled,
Returned
}
// Make sure that you use options.UseChangeTrackingProxies() in your DbContext settings.
using DevExpress.Data.Filtering;
using DevExpress.Persistent.Base;
using DevExpress.Persistent.BaseImpl;
// ...
[DefaultClassOptions]
public class Order : BaseObject {
private Accessory fAccessory;
[DataSourceCriteriaProperty(nameof(AccessoryCriteria))]
public Accessory Accessory {
get { return fAccessory; }
set {
SetPropertyValue(nameof(Accessory), ref fAccessory, value);
}
}
public CriteriaOperator AccessoryCriteria {
get { return CriteriaOperator.FromLambda<Accessory>(a => a.IsGlobal == true); }
}
//For enum properties
private OrderStatus fStatus;
[DataSourceCriteriaProperty(nameof(PendingConfirmedAndProcessingCriteria))]
public OrderStatus Status {
get { return fStatus; }
set {
SetPropertyValue(nameof(Status), ref fStatus, value);
}
}
public CriteriaOperator PendingConfirmedAndProcessingCriteria
=> CriteriaOperator.FromLambda(o => o.Status==OrderStatus.Pending || o.Status==OrderStatus.Confirmed|| o.Status==OrderStatus.Processing);
}
public class Accessory : BaseObject {
// ...
private bool fIsGlobal;
public bool IsGlobal {
get { return fIsGlobal; }
set {
SetPropertyValue(nameof(IsGlobal), ref fIsGlobal, value);
}
}
}
public enum OrderStatus {
Pending,
Confirmed,
Processing,
Shipped,
Delivered,
Canceled,
Returned
}
DataSourceCriteriaPropertyAttribute overrides DataSourceCriteriaAttribute when both attributes are applied to the same property.
DataSourceCriteriaProperty property value is assigned to the corresponding property of the Application Model. You can specify the property value directly in the Model Editor at the following path: BOModel | <Class> | OwnMembers | <Member>.
Object Attribute DevExpress.Persistent.Base.ModelExportedValueAttribute DataSourceCriteriaPropertyAttribute
See Also