PersistentCriteriaEvaluationBehavior Enum
Lists values that specify how filter criteria are evaluated within a transaction.
Namespace: DevExpress.Xpo
Assembly: DevExpress.Xpo.v24.2.dll
Declaration
Members
Name | Description |
---|---|
BeforeTransaction
|
Criteria are evaluated on the data store side. Objects created within a transaction (Cache), are not processed by the criteria. Objects modified within a transaction, are not processed. Instead, their images, stored in the data store, are processed by the criteria. |
InTransaction
|
All objects (Data Store and Cache) are processed by the filter criteria. |
Remarks
Values listed by this enumeration specify which objects are processed when a criteria is being evaluated.
Example
Creating a new XPCollection with the criteriaEvaluationBehavior parameter set to BeforeTransaction doesn’t add objects that have been created or changed within a transaction.
// Creates a new persistent object and saves it to a data store.
MyObject obj1 = new MyObject(session1);
obj1.Name = "Mike";
obj1.Save();
// Creates a new XPCollection.
XPCollection<MyObject> xpCollection = new XPCollection<MyObject>(unitOfWork1);
// Gets the number of objects within the collection.
// count = 1
int count = xpCollection.Count;
// Begins a transaction.
using (UnitOfWork uw = session1.BeginNestedUnitOfWork()) {
// Creates a new object within the transaction.
MyObject obj = new MyObject(uw);
obj.Name = "John";
// Creates a new collection and populates it.
XPCollection<MyObject> collection =
new XPCollection<MyObject>(PersistentCriteriaEvaluationBehavior.BeforeTransaction, uw, null);
// Gets the number of objects within the collection.
// count2 = 1
int count2 = collection.Count;
uw.CommitChanges();
// count2 = 1
count2 = collection.Count;
}
To allow these objects to be added to the collection, the criteriaEvaluationBehavior parameter must be set to InTransaction. Note, this significantly slows down the application’s performance.
MyObject obj1 = new MyObject(session1);
obj1.Name = "Mike";
obj1.Save();
XPCollection<MyObject> xpCollection = new XPCollection<MyObject>(unitOfWork1);
// Gets the number of objects within the collection.
// count = 1
int count = xpCollection.Count;
using (UnitOfWork uw = session1.BeginNestedUnitOfWork()) {
MyObject obj = new MyObject(uw);
obj.Name = "John";
XPCollection<MyObject> collection =
new XPCollection<MyObject>(PersistentCriteriaEvaluationBehavior.InTransaction, uw, null);
// Gets the number of objects within the collection.
// count2 = 2
int count2 = collection.Count;
uw.CommitChanges();
// count2 = 2
count2 = collection.Count;
}