BIZ

TMS Aurelius

ORM framework for Delphi with full support for data manipulation, complex and advanced queries, inheritance, polymorphism, and more...


Release

v3.10 (October 8, 2017)

Version history

Version History

Display:


v3.10

  • New : TAureliusDataset.RecordCountMode property.
  • Improved : Significant performance increase when retrieving entities from database.
  • Fixed : TCriteria.Refreshing state was lost when TCriteria was cloned.
  • Fixed : SQLite driver refactored to use static library on Android due to Android 7 Nougat error: "unauthorized access to "libsqlite.so".
  • Fixed : Design-time wizard icon not showing correctly in Delphi 10.2 Tokyo.

v3.9

  • New : TObjectManager.FindCached and IsCached methods.
  • New : TCriteria.Refreshing method.
  • New : TAureliusDataset.SyncSubprops property allows automatic update of associated fields.
  • New : TAureliusDataset.SubpropsDepth property allows automatic loading of subproperty fields.
  • New : TAureliusDataset.DefaultsFromObject property brings field default values with object state.
  • New : TAureliusDataset popup menu option at design-time for quick reloading field definitions.
  • New : DBIndex attribute.
  • Improved : When targeting DB2 databases, TDatabaseManager now retrieves schema of database objects and updates/creates them accordingly.
  • Improved : Updating ElevateDB database schema (TDatabaseManager.UpdateDatabase) is significantly faster now.
  • Improved : TAureliusDataset doesn't automatically call Flush anymore on Insert and Delete operations, when Manager property is set.
  • Improved : Faster lazy-loading of proxied associations in some situations.
  • Fixed : Firedac + Oracle on Delphi Tokyo was causing "Data Too Large" error on fixed-sized parameters.
  • Fixed : Calling TAureliusDataset.RecordCount on a closed dataset was raising an Access Violation.
  • Fixed : Calling TAureliusDataset.Delete was raising an exception in some specific situations.
  • Fixed : Argument out of range on specific Merge operations.

v3.8

  • Fixed : Using AureliusDataset, during an insert, if a Post operation failed, an Access Violation would be raised if user cancels insertion of record.
  • Fixed : Access Violation when loading a lazy blob in the handler of OnDeleted event

v3.7

  • New : Linux platform support together with Rad Studio 10.2 Tokyo support
  • Fixed : TGlobalConfigs.GetInstance.SimuleStatements not working
  • Fixed : Memory leaks in mobile platforms
  • Fixed : Error when loading entities with inheritance where a lazy blob field is declared in an inherited class.
  • Fixed : Better transactions handling on UIB (Universal Interbase) driver

v3.6

  • New : Manager events OnInserting, OnUpdating, OnDeleting.
  • Improved : Not equal (<>) operator support in Linq queries
  • Fixed : JSON Deserializer failed when deserializing nullable enumerated values
  • Fixed : Firebird schema update was trying to generate sequences even though they already existed in database (regression)
  • Fixed : Error inserting records in SQL Server when table name ends with "Values"
  • Fixed : DB2 dialect was not supporting schemas (regression)

v3.5

  • New : MSSQL dialect UseBoolean property allows using BIT data type for boolean fields in SQL Server
  • New : Firebird3 dialect support
  • Improved : Demos rewritten to better show use more recent Aurelius features
  • Improved : Column names can now be mapped using double quotes
  • Improved : Better error handling when SQLite DLL is not available
  • Fixed : Wrong behavior and cast errors in TAureliusDataset when moving dbgrid field columns linked to the dataset
  • Fixed : Memory leaks on nextgen (mobile) platforms when using FireDac (version 3.4.1)
  • Fixed : IBExpress adapter not working if using the overloaded Create constructor that receives a TComponent parameter
  • Fixed : Error with field names containing spaces.
  • Fixed : Cast error in Aurelius Dataset when setting a nullable enumerated field to null
  • Fixed : Aurelius Dataset Locate method accepts variant array as search value even when locating for a single field

v3.4.1

  • Fixed : Memory leaks on nextgen (mobile) platforms when using FireDac

v3.4

  • New : TDatabaseManager.IgnoreConstraintName property for better control of database schema update and validation
  • New : Linq query syntax improved with support for relational operators: Linq['Name'] = 'Mia'. All query examples in this documentation updated to newer syntax.
  • New : Linq functions Contains, StartsWith, EndsWidth now support projections: Linq['Name'].StartsWith(Linq['OtherField'])
  • New : Linq "type-helper" version all existing functions, like Upper or Year: (Linq['Name'].Upper = 'MIA') and (Linq['CreatedAt'].Year = 2015)
  • New : In clause in Linq queries
  • New : Cross-database Concat function: Linq.Concat(Linq['FirstName'], Linq['LastName'])
  • New : Arithmetic projections Add, Subtract, Multiply and Divide, also supporting operators: Linq['Total'] + Linq['Additional']
  • Fixed : ZeosLib depending on unnecessary units

v3.3

  • New : TObjectManager.Flush method can now receive an entity as parameter allowing flushing a single entity.
  • New : TCascadeType.Flush cascade type allows control of how associated objects will be flushed when flushing a single entity
  • New : Support for ZeosLib database-access components
  • Improved : When retrieving Int64 values from database, it now tries to handle the value even when the underlying db access component provides the value as float
  • Fixed : When using bidirectional associations, in some rare situations the many-to-one side of association was being cleared
  • Fixed : TAureliusDataset.RecNo returning wrong value when in insert mode
  • Fixed : TAureliusDataset displaying wrong records when using Filter in a detail dataset (DatasetField pointing to another dataset)

v3.2

  • New : TManagerEvents.OnSQLExecuting event that is fired for every SQL statement executed in database
  • New : TCriteria.Clone method allows cloning an existing Aurelius criteria
  • New : TAureliusDataset.IncludeUnmappedObjects property to allow object and list fields even if they are not mapped in class
  • Improved : Online Resources updated with links for new videos and articles
  • Improved : Mapping table and field names with spaces is now allowed, without needing to quote the names in quotes in mapping
  • Fixed : TProjections.Count failed for counting GUID fields
  • Fixed : TDateTime field values losing time part when using dbGO and ODBC driver
  • Fixed : Inheritance using discriminator failed in some situations with SQLite due to int32/int64 type mismatch
  • Fixed : DB Connection Wizard failed when using AnyDac connection
  • Fixed : Breaking change: Updating/Merging objects with proxied associations that were not modified was not clearing the value
  • Fixed : Breaking change: Merging transient objects with proxy collections was ignoring the collection content. TObjectManager.MergeListLegacyBehavior
  • Fixed : "Duplicate Field Name" error in Aurelius Dataset when loaded object had properties that have been redeclared from an ancestor class

v3.1

  • New : Explorer.ObjectFactory and Manager.ObjectFactory properties allows defing a custom object factory for creating entity classes.
  • New : Delphi 10.1 Berlin support
  • Fixed : Database update using table schema now working with PostgreSQL and MS SQL Server

v3.0

  • New : TObjectManager.Replicate method
  • New : Design-time wizard "New TMS Aurelius Connection" makes it very straightforward to create Aurelius database connections (IDBConnection)
  • Improved : TObjectManager.Find has a new overload that accepts TGuid value for id
  • Improved : TDatabaseManager can receive a TArray, allowing to create the database structure for all of them at once
  • Improved : Saving an object with user-assigned id was calling SQL to retrieve ID without need
  • Improved : Automapping now sets generator to SmartGuid if field FId is of type TGuid
  • Fixed : Wrong error message (AV) when opening a cursor and SQL dialect is not registered
  • Fixed : Sporadic AV when destroying TAureliusDataset without closing it
  • Fixed : Merging an object with a lazy-loaded list wouldn't delete removed items on Flush if the object being merged was not loaded from TObjectManager
  • Fixed : After Mapping Explorer raised an error about wrong mapping when retrieving columns for a class, it could later not raise that error anymore

v2.9

  • New : TObjectManager.UseTransactions property allows control whether manager uses transactions to perform internal operations. This is a breaking change.
  • New : Optimistic versioned concurrency control of entities using Version attribute
  • Improved : More detailed error message when loading a proxy fails due to duplicated records.

v2.8.1

  • New : Delphi 10 Seattle support

v2.8

  • New : OnInserted event parameters now include Master that hold the parent instance in case of unidirectional items being inserted
  • New : Cross-database, high-level projection functions in Aurelius queries. Date/time functions added: Year, Month, Day, Hour, Minute, Second. String functions added: Upper, Lower, Substring, Position, Length, ByteLength.
  • New : Additional TLinq conditions for string comparison: Contains, StartsWith, EndsWith.

v2.7.1

  • Fixed : AV when using Update event listener for objects in manager without previous state (using Update method)

v2.7

  • New : Events system allows subscribing listeners to respond to several events (e.g, when an entity is inserted, updated, etc.)
  • Improved : When deserializing objects from JSON, properties unknown to the entity will now be ignored, instead of raising an error.
  • Improved : Music Library demo includes an audit log viewer that illustrates usage of the events system.
  • Fixed : FireDAC driver not compiling on XE8

v2.6.3

  • New : Support for Delphi XE8

v2.6.2

  • Improved : TBlob.Data property removed. Breaking change
  • Improved : TBlob handling of data (especially using AsBytes property) improved for better performance
  • Fixed : TAureliusDataset now retrieves correct value for RecordCount when dataset is filtered
  • Fixed : Setting a lazy TBlob content that was not yet loaded didn't change blob content
  • Fixed : Rare Access Violation when reloading associated object lists that exist in object manager
  • Fixed : Flush not updating properties modified if lazy proxy/blob is loaded after properties were modified

v2.6.1

  • Improved : TAureliusDataset makes it easy to reload fields from classes at design-time by remembering the last class used to load fields
  • Improved : TAureliusDataset design-time dialog now makes it much easier to find a class by providing a search box
  • Fixed : TObjectManager.Merge was not updating collections when none of parent object properties was changed
  • Fixed : Rare error when inserting records in MS SQL Server, using SQL-Direct and native SQL Server client
  • Fixed : Error when inserting records with identity Id on tables with INSERT triggers in MS SQL Server
  • Fixed : Access Violation when destroying entity objects before destroying a TAureliusDataset component
  • Fixed : AV when loading a proxy value after an object refresh

v2.6

  • New : TObjectManager.Evict method allows removing an object instance from the manager without destroying it
  • New : TFetchMode option in CreateAlias allows per-query setting for eager-loading associations to improve performance
  • New : TCriteria.OrderBy provides an easier, alternative way to TCriteria.AddOrder to specify criteria order
  • New : TAureliusDataset.ParentManager allows fine-grained control over the manager used in detail datasets
  • New : TAureliusDataset.Current now returns an object even in insert state
  • Improved : Removed an extra final SQL being executed in paged queries using TAureliusDataset
  • Improved : Automatic destruction of TCriteriaResult objects in TAureliusDataset when using SetSourceCriteria or SetSourceCursor
  • Fixed : TAureliusDataset.BookmarkValid was wrongly returning true after the bookmarked record was deleted
  • Fixed : Saving child objects using unidirectional ManyValuedAssociation when parent has composite key
  • Fixed : Json serialization using SuperObject was providing wrong boolean value
  • Fixed : Design-time error using TAureliusDataset when recompiling packages with entities
  • Fixed : Blobs and associations being loaded in lazy mode were causing objects to be updated on flush

v2.5

  • New : SmartGuid generator allows using identifiers with sequential GUID for better database performance
  • New : RegisterEntity procedure helps registering a mapped class avoiding linker optimization to remove it from application
  • New : Proxy.Available property
  • New : OrderBy attribute allows defining a default order for many-valued associations
  • New : Multi-model design architecture allows different mapping models in a single application with a few lines of code, just by using attributes
  • New : Model attribute to specify the model where the class belongs to
  • Improved : Wrong data for fields OldValue property when dataset is empty
  • Improved : Trailing semi-comma from some PostgreSQL commands were causing errors when using FireDac with automatic record count
  • Improved : More detailed manager error messages when trying to save objects that are already persistent
  • Improved : Incompatibility between TAureliusDataset and FastReport design-time editor
  • Improved : Identity conflict when using MS SQL Server with multiple simultaneous sessions inserting in the same table

v2.4.1.0

  • New : Added Delphi XE7 support

v2.4.0.0

  • New : TObjectManager.Refresh method allows refreshing object state from database
  • New : TFirebirdSQLGenerator.WideStringCharSet property allows defining specific column character set for WideString properties in Firebird
  • New : TDriverConnectionAdapter.Connection property allows referencing the original database component used for the connection
  • New : TCustomJsonDeserializer.Entities property allows retrieving the list of objects created by the JSON deserializer
  • New : TCascadeType.RemoveOrphans allow automatic deletion/removal of child entities on Flush if they are removed from a parent collection
  • New : TBlob.Available property
  • New : ForeignKey attribute to define the name of foreign keys in the database
  • Improved : Merge now can receive objects with no id. This will automatically create a copy of the object and save it. This is a breaking change.
  • Improved : Better performance and memory consumption using unidirectional datasets to fetch data with some specific component adapters
  • Fixed : Error when updating objects with composite id in SQLite and one of id values is null
  • Fixed : Error when serializing a newly created entity (not loaded with manager) with a TBlob property that has not been initialized
  • Fixed : Error when deserializing empty dynamic array properties
  • Fixed : ElevateDB driver compile error when using latest ElevateDB versions

v2.3.1.0

  • New : Delphi XE6 Support
  • Improved : MappedClasses.RegisterClass now checks if the class being registered is a valid entity ([Entity] attribute present)
  • Improved : CascadeTypeAllButRemove constant makes easier to define association cascade with all options except TCascadeType.Remove
  • Fixed : Wrong TAureliusDataset behavior with db visual controls that rely on CompareBookmarks method
  • Fixed : Using [Automapping] attribute with classes that inherit from non-entity classes was causing "Id attribute not found" error

v2.3.0.0

  • New : Support for FireDac components
  • New : Support for Android platform
  • New : Property TIBObjectsConnectionAdapter.Transaction allows you to change the default transaction in an IBObjects connection adapter
  • New : Overloaded constructor for connection component adapters allows easier memory management when using data modules
  • Fixed : TAureliusDataset.Current method was returning an invalid value when it was in insert state.
  • Fixed : TAureliusDataset missing the current record position in some situations
  • Fixed : Memory leak when trying to save unmapped objects.
  • Fixed : "Duplicates not allowed" when retrieving objects in a inheritance tree where different descendant classes had associations with same name

v2.2.0.0

  • New : TCriteria.AutoDestroy property allows keeping TCriteria in memory after objects are retrieved
  • New : RAD Studio XE5 support
  • New : Increased querying capabilities with newTExpression/TLinq methods that allow comparing a projection to any other projection
  • New : Connection driver for XData RemoteDB
  • Fixed : Wrong default values when inserting a record in XE4 with TAureliusDataset
  • Fixed : IBObjects driver now correctly performing statements using IB_Session object specified in the TIBODatabase
  • Fixed : Exception not being raised when calling TClassHierarchyExplorer.GetAllSubClasses
  • Fixed : Error when deserializing a Json array representing an existing object list, when class member was a proxy

v2.1.0.0

  • New : RAD Studio XE4 support
  • New : Full iOS support, including native access to SQLite database
  • Fixed : Wrong example in documentation about lazy-loading associations in distributed applications (proxy loader)
  • Fixed : Schema validation example code in manual
  • Fixed : Not possible to create unique keys referencing columns declared using ForeignJoinColumn attributes
  • Fixed : Merge cascades not being applied correctly
  • Fixed : Error using transactions with IBExpress, IBObjects and DirectOracleAccess components
  • Fixed : Access violation when loading package multiple times in TAureliusDataset design-time editor

v2.0.0.0

  • New : Update Database Schema feature (TDatabaseManager.UpdateDatabase method)
  • New : TSQLiteNativeConnectionAdapter.EnableForeignKeys and DisableForeignKeys methods allow control when foreign keys are enforced in SQLite connections
  • New : TMappingSetup.MappedClasses property allows defining different class entities for different setups
  • New : TDatabaseManager.SQLExecutionEnabled property allows generating scripts to update/create/drop database schema without effectively execute statements
  • New : Detailed Database Schema analysis when updating/validating/creating
  • New : Database Schema validation feature (TDatabaseManager.ValidateDatabase method)
  • Improved : TGlobalConfig.AutoSearchMappedClasses property removed
  • Fixed : Conversion error in TAureliusDataset entity fields when using live bindings

v1.9.0.0

  • New : Support for Unified Interbase (UIB) components
  • Improved : Statements to generate MS SQL Server database structure now explicitly declare NULL constraint when creating fields
  • Improved : Specific conversion issue when retrieving TGuid value from UNIQUEIDENTIFIER fields, using SQL-Direct with server type set to stSQLServer
  • Improved : Retrieving objects (Find) with null id in database now raises an exception instead of just returning a nil instance.
  • Improved : Exception when setting TAureliusDataset.Filtered := true when dataset is active
  • Improved : Error when flushing objects with many-valued-association declared before id fields and which foreign key field had same name as id field
  • Improved : Cascade not being applied when flushing objects with single-valued associations pointing to unmanaged (transient) instances
  • Improved : Auto mapping now automatically includes TColumnProp.NoUpdate in ID column properties
  • Fixed : Uses clause in Direct Oracle Access driver included a wrong unit name
  • Fixed : Error when deserializing Nullable types using JSON deserializer

v1.8.0.0

  • New : Support for Direct Oracle Access components
  • Improved : Updated source code to work correctly when recompiling with Assertions off
  • Fixed : Rare memory leak when using some specific compiler settings (Optimizations=On)
  • Fixed : Memory leak in "Getting Started" demo
  • Fixed : Error using TAureliusDataset.Locate with nullable string fields when there were null fields in dataset

v1.7.0.0

  • New : Full JSON support makes it easy to build distributed applications
  • New : Enumeration field as string now possible in TAureliusDataset by using field name suffix ".EnumName"
  • Improved : TGlobalConfigs.AutoMappingDefaultCascade now split in two different properties for Association and ManyValuedAssociation (breaking change)
  • Improved : IdEq method in TLinq
  • Fixed : TGuid properties and fields were causing occasional errors in Flush method calls

v1.6.0.0

  • New : TCriteria.RemovingDuplicatedEntities allows removing duplicated objects from result list
  • New : Support for FIBPlus components
  • New : Properties Count and PropNames in TCriteriaResult object provides additional info about retrieved projections
  • New : Delphi/C++Builder XE3 support
  • Improved : Possibility to use descendants of TList/TObjectList for many-valued associations
  • Improved : Non-generic TObjectManager.Find method overload accepting a class type as parameter
  • Improved : Better support for other date types (string and julian) in SQLite database
  • Fixed : Memory leak when creating a default TMappingExplorer
  • Fixed : Error when saving collection items belonging to a joined-tables class hierarchy
  • Fixed : Cascade removal was not removing lazy-loaded associations if the associations were not loaded

v1.5.0.0

  • New : TExpression.Sql and TProjections.Sql methods for adding custom SQL syntax to a query, increasing flexibility in query construction
  • New : Support for properties/fields of type TGuid, which are now mapped to database Guid/Uniqueidentifier fields (if supported by database)
  • New : Support for Absolute Database
  • New : Guid, Uuid38, Uuid36 and Uuid32 identifier generators allow client-side automatic generation of GUID and/or string identifiers

v1.4

  • New : Dynamic properties allows mapping to database columns at runtime connection
  • Improved : TCriteriaResult objects supported in TAureliusDataset
  • Improved : TCriteriaResult object can retrieved projected values by projection alias
  • Improved : TAureliusDataset.Post method now saves object if it's not persisted, even in edit mode
  • Improved : Better validation of MappedBy parameter in ManyValuedAssociation attribute
  • Fixed : Manual Quick Start example updated with correct code
  • Fixed : Issue with association as part of composite id when multiple associations are used in cascaded objects
  • Fixed : Automapping was not correctly defining table name in some situations with inherited classes

v1.3

  • New : TCriteria.Open method allows returning a cursor for fetching objects on demand
  • New : TBlob.LoadFromStream and SaveToStream methods for improved blob manipulation
  • New : TAureliusDataset.InternalList property allows access to the internal object list
  • New : Support for ElevateDB database server
  • New : Paging query results now supported by using new TCriteria methods Skip and Take
  • New : Paged fetch-on-demand using TAureliusDataset.SetSourceCriteria allows fetching TDataset records on demand without keeping an open database connection
  • New : Fetch-on-demand support on TAureliusDataset, by using SetSourceCursor method
  • New : "Not" operator supported in TLinq expressions and "Not_" method in TExpression
  • Improved : TObjectManager.Find method introduced as an alias for CreateCriteria method for query creation
  • Improved : TCriteria.UniqueResult returns the unique object even if the object is returned in more than one row (duplicated rows of same object)
  • Improved : TCriteria.UniqueResult now returns nil if no objects are returned
  • Improved : NexusDB through UniDac components now supported

v1.2

  • New : Support for UniDac components
  • New : Fully documented TAureliusDataset component for visual binding objects to data-aware controls
  • Improved : IBObjects adapter now can adapt any TIB_Connection component, not only TIBODatabase ones
  • Improved : Better exception messages for convert error when load entity property values from database
  • Improved : Better error handling with more detailed and typed exceptions being raised at key points, especially value conversion routines
  • Fixed : Memory leak in MusicLibrary demo
  • Fixed : Issue with lazy-loaded proxies using non-id columns as foreign keys
  • Fixed : Issue with SQL statement when using more than 26 eager-loading associations
  • Fixed : Issue when selecting objects with non-required associations and required sub-associations
  • Fixed : Automapping in a subclass in a single-table hierarchy caused issues when creating database schema
  • Fixed : Adding Automapping attribute was not requiring Entity attribute to be declared

v1.1.0.0

  • New : TObjectDataset preview (for registered users only)
  • New : Support for IBObjects components
  • Improved : MusicLibrary demo refactored to use best-designed controllers
  • Improved : Access Violation replaced by descriptive error message when SQL dialect was not found for connection
  • Fixed : Registered version installer sometimes not correctly detecting XE/XE2 installation
  • Fixed : Memory leak is some specific situations with automapped associations
  • Fixed : Memory leak in MusicLibrary demo
  • Fixed : Issue with automapping self-referenced associations
  • Fixed : Default value of OwnsObjects property in TObjectManager changed from false to true (as stated by documentation)
  • Fixed : Component adapter was ignoring explicitly specified SQL dialect
BIZ

Buy online

TMS Aurelius


for Delphi 2010, XE, XE2, XE3, XE4, XE5, XE6, XE7, XE8, 10 Seattle, 10.1 Berlin, 10.2 Tokyo (Prof/Enterprise/Architect)


View licensing FAQ

Single developer license


license for 1 developer € 195


order now
add to cart

Small
team


license for 2 developers € 295


order now
add to cart

Site
license


unlimited developers in the company € 695


order now
add to cart


CreditCards and PayPal Accepted


This product is also available in the following bundle(s):

Bookmarks