All the options of the DDCF are not impossible to resolve only in framework source code. It is also necessary to implement a range of control mechanisms directly in the database. DDCF is utilisable within databases that allow work with stored procedures or at least with parametrized queries. For this reason the development team needs knowledge of a particular database, which can be considered a disadvantage by an ORM expert. Advantages dominate when extensive database systems are being developed and a range of factors needs to be controlled. Full use of all the database’s options can then be made – database schemes, return counted columns, validate input/output operations directly in the database etc. The response speed is of course incomparable with other frameworks.
DDCF does not support the creation of queries directly in the application’s code (e.g. using LINQ2SQL etc.) because that is the most common cause of errors. This due to the creation of more complex queries than the basic “select record by Id”. When a more complex query connecting a number of tables including aggregated functions is being made, the chance of error increases. Alternatively, wrong result of a query can be caused by a limited entity of the tested data, on which the query is being tuned, as well as by the knowledge and experience of the developer. An unpleasant issue can occur if already extensive entities need to be processed when in actual use. In that case every minor mistake in the query construction, which delivers wrong results, leads to having to repair the source code, new compilation and new installations, which is unacceptable. From the DDCF point of view these situations are dealt with on the database level.
DDCF communicates with the data sources using data providers both within the VPN (through connection string) and within web services. Part of the delivered solution is MSSQL data provider and WebService data provider. Nevertheless, the developers can easily derive any data provider according to their needs.
The source code of the application is shaded from the syntax of the used database by using specialised functions of the DDCF. This allows the source code of the application to be independent of the databases used. The independence is achieved by requests for the required data being sent by the individual objects. These requests are captured by Data Access Layer and passed on to a particular provider (or a web service). A particular data provider that already knows how to process the data and in what format to return them is then assigned to process the requests. The resulting application can then be connected to various databases and even the development itself can be carried out simultaneously. One group of the developers writes the application code, second group is developing the database, e.g. for MSSQL an third is simultaneously developing an Oracle or any other database.