Frans Bouma, one of the developers of LLBLGen Pro and founder of Solutions Design, announced this new release on his blog and provides some detail about these key features, summarized here:
- Auditing Support: The auditing support is setup in such a way that you can also use it as a journalling feature, and it is offered transparently by the framework.
Authorization Support: Handled a variety of ways whether you use Windows authentication, thread principals, ASP.NET role-based security or your own. - Dependency Injection Mechanism: Adds a mechanism to the framework which uses Dependency Injection to set Validators, Concurrency predicate factories, Auditors and Authorizers. The example given above is code which resides in your project, or in a separate assembly for example. The Dependency Injection mechanism of the LLBLGen Pro framework injects instances of annotated classes into the types specified in the attribute.
- Fast and Compact Serialization/Deserialization: Enhanced XML serialization/deserialization, exporting/importing entity graphs to/from XML is very fast now and the XML is very compact.
- Even Better Prefetch Paths: We made the prefetch path engine (eager loading) even smarter so it now knows more ways to optimize the queries it has to create. This leads to even faster graph fetching. Of course we also streamlined a lot of code under the hood to make data fetching much faster in general.
- Singularization and Pluralization of Names: The LLBLGen Pro designer now singularizes and pluralizes names for entities, fields, etc. based on a plug-in based system. This allows users to add a plug-in which can singularize and pluralize names in their own language. We ship a plug-in for English, which is based on Castle's Inflector class.
- Abbreviation Support: The LLBLGen Pro designer helps developers a lot by creating entities, mapping fields, etc. and it's key that the names for the entities and fields are easily constructable from this meta-data. Abbreviation support lets you specify a list of abbreviation - full word pairs which are then used to build the names for entities and fields.
- In-memory Hierarchical Filtering and Projections: As LINQ to Objects is still some time away, it's key that a persistence mechanism has proper in-memory filtering of entities and also has proper projection mechanisms so you can consume the entity data in different ways. A couple of new predicate classes which allow you to filter in-memory entity sets based on aggregate functions ran on related entities in memory and your own functions so you can fetch a graph with customers and their orders and order detail entities and then in-memory create an entity view on the customer set to view only those customers you want
- Excluding Fields for Fetching: A feature called 'Excluded fields' which allows you to define a set of fields which should be excluded for the fetch (or which should be the only fields fetched and the rest should be excluded) for every fetch performed by the framework, including for nodes in a graph to fetch. If you then later on decide to fetch the excluded field or fields into the existing entity, you can do that with a special fetch method which efficiently will fetch the excluded fields and will merge them into the existing entity objects.
- Sybase ASA and ASE Support, SQLServer CE Desktop Support: A bunch of databases to the set of supported databases. This time we added the Sybase family of databases (iAnywhere (ASA) and Advanced Server Enterprise (ASE)) and also SQLServer CE Desktop to the list of databases which can be used with LLBLGen Pro.