- Automatic database schema creation and upgrade - use DbDataProvider.PrepareDatabase to keep database fresh and valid. Also you can use DbDataProvider.CreateDatabase to create tables in empty database and DbDataProvider.UpgradeDatabase to upgrade database according to changes in persistent classes.
This release is technological preview. Now only SQL-92 data types are supported. Algorithm is the following: first database schema is generated. And generated schema is saved (temporary ie is saved to a file; in final solution it will be saved to database somehow or even read directly from database). The next call to PrepareDatabase
ODX compares required and existing (saved last call) schemas and generate SQL-script to update changed tables and create new ones. and, finally, updates saved schema.ODX 1.6 - 1.0
- Documentation is released for the first time!
- Row Versions - use Table attribute to force ODX to use row version for concurrency control. Otherwise ODX uses foll row compare.
- IIS Remoting - use IIS as an excellent application server. No server code is required to implemen a simple IIS-based ODX server.
- Unique constraints - specify unique constraint to the class underlying table with UniqueConstraintAttribute.
- Unique constraints again - use Session.Save(SaveMode.Concurrent) to safely handle Unique constraints. SaveMode.Concurrent throws a DBConcurrencyException. SaveMode.Overwrite deletes DB versions of data and inserts your in-memory versions.
- Data Replication loading data from remote node of distributed system may require smart update option: existing object should be updated, new ones - created. But all objects are unchanged as they were read from remote data source. ODX now delivered such sort of update. Simply accumulate data from the remote DB in a separate Session and use Session.Save(SaveMode.Complete) to send all data to data source.
- Fixed a "collection was modified" exception (was throwed in some cases).
- Custom SQL selects - feel free to retrieve objects with custom SQL. Paging is connected to custom SQLs as well. See Sample #12 for details.
- Weak entity cache - entities are removed from cache if unreferenced.
- Smart merging - use Session.Combine() to safely resolve Unique constraint conflicts.
- Parameterized Selects - use '?' to specify a parameter for a filter
- Remoting - transfer entities via remoting channels with Odx(Server,Client)FormatterSinkProvider.
- Paging - iterate huge rowsets with minimum memory.