DB Discussions: Transaction Model, Savepoints, Locking; Exception Handling; Caching: Difference between revisions
(Created page with '==Transaction Model== TODO Documentation ChristianK to come up with a general wrapper Class for UIConnectors and WebConnectors which would start and commit/rollback DB Transacti…') |
|||
Line 40: | Line 40: | ||
==DB Access Exception Handling== | ==DB Access Exception Handling== | ||
===General=== | |||
Maybe utilise the 'general wrapper Class for UIConnectors and WebConnectors' mentioned above to implement general DB Access Exception Handling? | Maybe utilise the 'general wrapper Class for UIConnectors and WebConnectors' mentioned above to implement general DB Access Exception Handling? | ||
===SubmitChanges Methods=== | |||
At the moment our auto-generated '...SubmitChanges' Methods in the openPETRA Datastore return a TVerificationResultCollection, but that should be changed. We are planning changes on Exception Handling in openPETRA - these Methods will then throw a specific Exception instead (with InnerExceptions, if necessary), which can be evaluated and displayed on the client side in a standard way. There isn't really a point in handling database errors in TVerifcationResultCollections, as a database error is always unexpected when data is saved and therefore it is appropriate to raise an Exception in this case, which can escalate quickly and can't be missed. | |||
==Caching of Data (general)== | ==Caching of Data (general)== | ||
TODO | TODO |
Revision as of 09:54, 15 March 2011
Transaction Model
TODO Documentation
ChristianK to come up with a general wrapper Class for UIConnectors and WebConnectors which would start and commit/rollback DB Transactions for us (as suggested by ThiasG), relieving programmers of writing code for those tasks over and over.
Savepoints
As of now, we don't use Savepoints in openPETRA.
Investigation
We should do an investigation of whether Savepoints are available.
- Savepoints got generally introduced to .NET with ADO.NET 2.0, but their support is depending on the underlying DB system
- Need to check availability for and perform tests with
- PostgreSQL
- MySQL
- SQLite
- ODBC in general (for other DB systems without a specific .NET driver)
ChristianK recons we can use Savepoints only
- if they are supported at least with PostgreSQL, MySQL and SQLite
- if they work on Windows and Linux alike.
ChristianK's 'dumping ground' of some initial investigations:
- General
- PostgreSQL
Locking
TODO Documentation
DB Access Exception Handling
General
Maybe utilise the 'general wrapper Class for UIConnectors and WebConnectors' mentioned above to implement general DB Access Exception Handling?
SubmitChanges Methods
At the moment our auto-generated '...SubmitChanges' Methods in the openPETRA Datastore return a TVerificationResultCollection, but that should be changed. We are planning changes on Exception Handling in openPETRA - these Methods will then throw a specific Exception instead (with InnerExceptions, if necessary), which can be evaluated and displayed on the client side in a standard way. There isn't really a point in handling database errors in TVerifcationResultCollections, as a database error is always unexpected when data is saved and therefore it is appropriate to raise an Exception in this case, which can escalate quickly and can't be missed.
Caching of Data (general)
TODO