SharpDevelop Community

Get your problems solved!
Welcome to SharpDevelop Community Sign in | Join | Help
in Search

Dickon Field

August 2006 - Posts

  • #DbTools -> ServerExplorer

    About the Project 

    I'm currently working on a plug-in for #D the primary intention of which is to provide some tools to work with databases from within #D, and to issue and manipulate queries. As the work has progressed it looks like it would be a good idea, and not too difficult, to extend the basic Pad to provide server browsing and management functionality, similar to VS2005.

    The initial aim of the plugin is to provide tools pretty similar to the DTP project in Eclipse, but not to write them nearly as much from the ground up (which is the approach the DTP project seem to have taken - fair enough since they have a good amount of resource to put behind it!).

    The principles I am trying to stick to are:

    • exploit, and remain consistent with, the .net 2.0 generic db provider framework - this has given me a pretty good start since it very effectively genericizes the access to data sources using a nice factory-based design, as well as providing a (hopefully) fairly generic metadata interface
    • keep view and model as cleanly separated as possible (in the style of MVC, although WinForms seems to require you to adlib a little there) - I have tried to adopt and remain consistent with the service-based approach used elsewhere in #D, which so far is working pretty well
    • where I need to extend or build on the .net 2.0 provider framework to remain consistent with the way in which this works. This means (as elaborated a in a little bit later) creating factories for a variety of artefacts using the Invariant Name as the parameter to them. Not surprisingly this is pretty complex since there is a lot of vendor specific information relating to each db server - ranging from vendor specific metadata types to variations in SQL grammar to differences in the way in which server-instance and database-instances are referred to. This will probably end up being something a bit like the 'knowledge pack' concept that you see in dbArtisan.

    Similarly to the DTP project I am hoping to make it possible to work either against an actual datasource, or disconnected from the source, by caching the metadata from the data source (using the remarkably powerful DataSet).

    The basic phases of the work are probably something like:

    1. connection management and metadata browsing tool - a prototypical version is done (see below), but this has a way to go. Quite a lot of the framework concepts are emerging while doing this
    2. database object inspection, probably using nice drag-and-drop features
    3. SQL query and DDL editing
    4. some funky typed DataSet stuff
    5. ...along with 4: incorporation of data sources into projects via the app.config file - actually it might be possible to do this earlier rather than later

    Where it has got to

    Very prototypical phase 1 functionality available in build 1699 of #D 2.1 (currently only available via Subversion I believe):

    Some initial thoughts on the classes involved looks like the following, although there are a number of classes required to manufacture vendor specific metadata etc that I need to add to this:

Powered by Community Server (Commercial Edition), by Telligent Systems
Don't contact us via this (fleischfalle@alphasierrapapa.com) email address.