Download Now
STORM is an acronym for Strongly Typed Object Relational Mapper.
One day while playing around with generics we wrote a cool little data factory that could take any entity object (business object) and fill it full of data by specifying a few custom attributes. We then added support for CRUD operations for Inserting, Updating, Deleting, as well as Transactions. That saved us a ton of time not having to code up all the ADO parameters and command classes to talk to our stored procedures. It seemed like a cool thing and so we used it on a few projects.
Then we noticed there was this whole ORM product space. A few major vendors and open source projects did something very similar (mapping objects to data), but most of those required direct table access to the database and that was completely out of pattern with our security philosophy. Is there room for an ORM that does not require table access? We think so.
Initially, just releasing a framework and a data factory seemed barely useful. We understand that each development group has its own set of patterns that have grown up and evolved over time and we did not want to force teams to adopt a new framework. Instead, we took a look at our best practices for Stored Procedures, Business Rules, Data Access and from this we distilled the raw functionality from the style. Then we created a code generator that would write all the code for us and moved all the style elements (i.e how you organize your solution and projects, your name spaces, class names, collection names, etc...) into a set of configuration settings. This allowed for the generation of near complete applications (sans UI) in a variety of styles with the same basic functionality for accessing data and processing business rules.
A strong ORM engine, an example framework and code generation seems like a good product but we were missing one vital piece: Visual Studio IDE integration. We engaged SquareWidget and the end result was a front end for us called (but of course) StormFront.
Now from inside the IDE, you can generate code (good code by the by - we use generics, custom attributes, predicate delegates, anonymous methods, etc.) or stored procedures simply by pointing at a schema. All the generated code is customized to the patterns you have configured. In fact, there are over 50 settings to control how the code looks. the end result is a collection of code that looks and feels like your own hand crafted source, and generating it can save you a ton of time.