Your cart is currently empty!
Unit Of Work
Overview
UnitOfWork<T> is a generic class implementing the Unit of Work pattern. It manages a collection of entities of type T, tracks changes, and provides CRUD (Create, Read, Update, Delete) operations. It’s designed for use in scenarios where data binding, change tracking, and asynchronous data operations are essential.
Key Features
- Asynchronous CRUD Operations: Supports asynchronous operations for creating, updating, and deleting entities.
- Change Tracking: Tracks the state of entities (added, modified, deleted) for efficient update operations.
- Event Handling: Implements event handlers for property and collection changes, along with custom events for various data operation stages.
- Data Source Interaction: Flexible interaction with various data sources, as defined by
IDMEEditorandIDataSourceinterfaces. - Observable Collections: Manages collections of entities with
ObservableBindingList<T>for data binding and notification support. - Error Handling and Logging: Robust error handling and logging capabilities.
- Undo Functionality: Ability to undo delete operations.
Properties
IsDirty: Indicates whether there are unsaved changes in the current unit of work.Units: The primary collection of entities of typeTbeing managed.FilteredUnits: A filtered collection of entities based on specified criteria.EntityStructure: Contains metadata about the entity typeT.PrimaryKey: The primary key property name of the entity typeT.
Methods
CRUD Operations
Create(T entity): Adds a new entity to theUnitscollection.Read(string id): Retrieves an entity by its primary key.Update(T entity): Updates an existing entity in theUnitscollection.Delete(T entity): Removes an entity from theUnitscollection.
Asynchronous Operations
Commit(): Asynchronously commits all changes made in the current unit of work.InsertAsync(T doc),UpdateAsync(T doc),DeleteAsync(T doc): Asynchronous methods for CRUD operations.
Utility Methods
Clear(): Resets the unit of work to its initial state.GetSeq(string SeqName): Retrieves the next value of a specified sequence.GetPrimaryKeySequence(T doc): Obtains the primary key sequence for the given entity.FindDocIdx(T doc): Finds the index of a given document in theUnitscollection.UndoDelete(): Undoes the last delete operation.
Event Handlers
ItemPropertyChangedHandler: Handles property changes of individual entities.Units_CollectionChanged: Responds to changes in theUnitscollection.
Events
PreInsert,PostCreate,PreDelete,PreUpdate,PostUpdate: Events triggered at various stages of data operations.
Usage
The UnitOfWork<T> class is typically used in applications that require robust data management with change tracking, data binding, and asynchronous operations. It is well-suited for desktop applications, enterprise solutions, and any scenario requiring an organized approach to entity management.
Note
This documentation provides an overview and is not exhaustive. Users of the UnitOfWork<T> class should refer to the actual code for more detailed information about each method, property, and event.