I have been doing some preparation for my two Blackbaud conference sessions (in London and in Washington D.C.). Each year I present at the Blackbaud conferences I develop some new code to show. This year is no exception and without going into too much detail I am sure this will not disappoint those who are excited to see what can be done on the Infinity platform that The Raiser’s Edge platform code only ever dream of doing!
The SDK has some great integration with Visual Studio. For starters you are given very many template items to build your own components from. Intellisense works well in both the XML specs that you have to write and also in any corresponding .NET code.
Unlike The Raiser’s Edge where writing directly to the database was a real taboo, in eCRM you are expected to do so. There are of course methodologies and patterns that you must adhere to but in the main you just put the data you want to directly into the table you want to. This is made all the more easy when you use Linq to SQL as everything is represented to you as implemented classes of those tables. This is where intellisense really comes into its own.
When you create data forms for adding or editing data you tie them to a spec. You are then given components that correspond to the data type and are bound to that data. Essentially you need no doing any coding to get the data to show up. (In actual fact you don’t even have to create a form. You can simply rely on the default form implementation from the XML spec. However you are limited to the default layout of the fields when using this method.)
One gripe that I have (and it is not really a major one) is that when you need to open up the data connections tree, looking at the tables and then the stored procedures this can take a considerable length of time. The number of tables and stored procedures have really ballooned since RE. Clearly eCRM is a more complicated product but also the each table has a corresponding audit table (doubling the number of tables to start with) and code tables each have their own table unlike in The Raiser’s Edge where all values are stored in the TableEntries table.