Data Designer Extensibility (DDEX) provider and SqlEditor for Firebird. (Change Log)
Implements most DDEX 2.0 interfaces prevalent in the Microsoft SqlServer DDEX and SqlEditor extensions.
Open image in new tab to view fullscreen
- Firebird DDEX provider support for Visual Studio's DDEX 2.0 IVs DML interfaces utilizing FirebirdSql.Data.FirebirdClient version 10.0.0.0.
- Microsoft SqlServer SqlEditor port for Firebird for editing Computed columns, Triggers, Views, Procedures, Functions, SQL scripts and
.fbsql files. Note: The editor service execution plan visualizer is not currently functional. Execution plans are text based. Intellisense is based on Microsoft's Transaction-SQL language service. Firebird specific grammar may be reported as errors or warnings but still successfully execute.
- Trigger/Generator auto-increment linkage.
- Full integration of Server Explorer with asynchronous loading. Connection dialogs include Host and Database drop-down selection; derived from Server Explorer, FlameRobin and the current solution projects' settings and EDM connection strings.
- SqlEditor text-based execution plans and statistics snapshot comparer.
- Configurable connection equivalency keys under
BlackbirdSql Server Tools DDEX user options.
- Within Server Explorer, top level folders for Tables, Views, Stored procedures, Functions, Sequence Generators, Triggers and Domains.
- Within tables, drilldowns for indexes, foreign keys and triggers, and table columns, index columns, foreign key columns and trigger columns.
- Identification of Identity fields, Primary keys, Unique keys and Computed columns.
- System table, system index and system trigger enumeration within the SE and support for system tables within the xsd and edmx models.
- Edmx identity (auto-increment primary key) column and foreign key support.
- Procedures, functions, views, triggers and computed columns display the decoded blr if no source exists.
- Display of initial value (seed), increment and next value within column primary key, trigger and sequence generator property windows.
- New query and data retrieval for both user and system tables.
- Automated DbProviderFactories and EDM validation and update of a Solution's App.Config, and upgrade of EDMX models to DDEX 2.0. This procedure can be run from the context menu of any open node in Server Explorer.
- Plug and play. No configuration of the .csproj, app.config or machine.config files and no GAC registration.
- BlackbirdSql background and UI thread tasks compliant with the IDE TaskHandler and implements the user cancel feature for background tasks from the TaskHandler window.
- All exception, task progress and task status reporting logged to the output window accessible under BlackbirdSql in the dropdown (Enabled by default under Options).
- The connection node
Refresh command option in the SE will successfully recover from a connection timeout shutdown exception, to the node's previous state.
Disclaimer/Warning regarding exposing members with hidden access modifiers. The private edit field of the VS User Options PropertyGrid GridView is accessed to overcome a long-time irritant and implement radio buttons and check boxes into the grid by utilizing type converters and attributes. There are several other locations where hidden members are also exposed.
All access of this nature takes place in the BlackbirdSql.Core.Reflect class. As a rule no other code within the extension may expose hidden members. The code performing this access is 100% stable, using standard calls included in Visual Studio's Reflection. If you object to this practice, do not install this extension.
Deconstructing connection naming, equivalency and SE integration
For a clearer understanding of BlackbirdSql's RunningConnectionTable management of connections, insight into it's basic rules of operation can be found here.
- If on startup of the Visual Studio IDE, and only on startup, an EDMX model has been left open within a solution, Visual Studio may flag the provider as unavailable and then load the invariant assembly from the incorrect domain. BlackbirdSql will automatically recover but the EDMX model will need to be closed and reopened to be activated. Unless we're missing a trick here this seems to be unavoidable. Loading is asynchronous, so provider registration and loading is delayed by the IDE.
We want to be as unobtrusive as possible so load delays are just a reality if we go the asynchronous route. (Loading is initiated at the earliest possible, which is as soon as the IDE shell context is available.)
- Operations within the EDMX UI can take some time. For even a single table the wizard executes over 100 SELECT statements with the primary SELECT statement having 20+ JOINS and 5+ UNIONS. Even a Cancel request can lock up the IDE for some time. Be patient.
- Intellisense and Firebird grammar: The Language service for the SqlEditor service is still under development and has not been linked into the extension. When opening scripts for Triggers, Views, Procedures, Functions, Computed columns or SQL statements, the SqlEditor uses the Visual Studio built-in T-SQL Language service. This means that Intellisense may mark incompatible SQL and DDL as errors. The scripts will still successfully execute.
- Support for embedded databases: BlackbirdSql uses the FirebirdSql.Data.FirebirdClient client, so embedded databases 'should' work, however no testing has been performed on embedded databases as of this writing.
- The SqlEditor port does not currently support script parameter loading.
- The BlackbirdSql Editor settings in Visual Studio Options have been ported as is from the Microsoft SqlServer SqlEditor settings. This means that several options are not currently being used or are not applicable.
- If you have a huge number of triggers then rendering of the triggers in the SE, or any other collection for that matter, may take some time. This has nothing to do with the parser but is simply down to network and database server performance. To minimize the effect of this, Trigger/Generator linkage is built asynchronously as soon as a connection is established.