How smart and good are the DO upgrade functions? In my desktop application I am using SQL CE as a backend. I basically have 1 entity called Program which contains several other entities, but all are linked to a single Program. Let's say that, over the course of a year, I release 5 versions of my desktop application, each containing a small modification to the data model. If a user updates from version 1 - 2 - 3 - 4 - 5 the upgrade functions do their job and everything seems to work nicely. But I also want my users to be able to update from version 1 - 5 directly, 2 - 4, 3 - 5 and so forth. Are the upgrade functions of DO smart enough to detect this, or will I have to foresee upgrade functions from each possible start version to each possible end version myself? What would be best practice? Secondly, users can export and import data. Since the data is identical to a single Program entity my quickest and easiest solution was to create a new database file, which contains the exact same layout as my main application database file, it will just contain a single instance of a Program and all it's required data. So far, no problem. But user A can export a Program from version 1, and user B should be able to import it into his version 5. So the same upgrade steps should be performed on the exported database file before the data is added to the main application database file. Again, is DO smart enough to detect from which version to start, and in which version to end? |
It seems I didn't fully understood the question. Do you mean:
Is this a correct description?
I updated the initial question since I ran out of characters in this comment box.
So the question becomes, how smart and good are the DO upgrade functions, how much manual work will I need to do and how complicated will it get?