Customer login     
 
 
|       Buy now!      |       Download trial      |       About LLBLGen Pro      |       Support      |       Home      |     

Product info

 
General
Overview
Why LLBLGen Pro?
Customer benefits
Requirements
Roadmap
Pricing
Designer
Screenshots
Videos

Features

  Designer
LLBLGen Pro
Entity Framework
NHibernate
Linq to SQL

Downloads

  Trial
Additional downloads
Manager ppt
Open Source

Support

  Forums
Change log history
Partners
Consultancy
Online documentation

Misc

  Our customers
Merchandise

 

Features LLBLGen Pro Runtime Framework

  The LLBLGen Pro runtime framework is our own O/R mapper framework and is shipped with the LLBLGen Pro designer. Below you'll find a list of the feature highlights of this powerful O/R mapper framework.

Categories:   Entity management & usage
Querying related
Generated code related
General

Note: The links to the LLBLGen Pro runtime framework documentation in the list below sometimes point to documentation for 'Adapter', however in almost all of these cases, the same features are available for 'SelfServicing' as well.

Entity management & usage

  • 'Transparent persistence' with SelfServicing template set and 'Persistence as a service' with Adapter template set.
    Two paradigms are supported, which both have their own characteristics and specific features. More information...
  • Graph-aware save logic
    The runtime will persist changed entity instances in the right order and will automatically traverse an entity object graph in-memory to obtain all work to be done.
  • Entity View support
    Define different views (based on sort clauses and/or filters) on an entity collection in-memory and bind those views to UI controls.
  • Dependency injection mechanism
    The runtime framework has its own IoC/Dependency Injection mechanism to make it transparent and flexible when validators, concurrency predicate factories, auditors and authorizers are injected in entity instances. It makes working with validators and the like much easier as you only have to define in which instances a validator has to be injected without writing code to do so. More information...
  • Authorization support
    The runtime framework has fine-grained authorization supported through authorizers you can write yourself using easy to extend base classes. Authorization can be used for example to avoid having some users see some data or do certain actions to entity instances. More information...
  • Auditing support
    The runtime framework has transparent and in-transaction auditing support for tracking and logging actions taken on entities. Audit information can be exported to any output you like or transparently be saved as entities inside the same transaction. More information...
  • Validation support
    The runtime framework supports deep, fine-grained validation support through validator objects you write using simple extendable base classes. More information...
  • Unit of Work support
    You can group multiple database actions you want to take on various entities, like delete and insert/update, into a Unit of Work object which you then can use to execute all work inside that Unit of Work as a single transaction. More information...
  • Hierarchical in-memory projections of entity collections
    The runtime framework allows you to create projections of the full graph of all the entities inside a given entity collection onto a DataSet or a Dictionary object. More information...
  • Design typed projections over a set of related entities using Typed Lists
    Typed Lists are generated as typed datatables, and are usable as flat, read-only data sets obtained from the data of one or more related entities using a query designed in the designer.
  • Entity instance uniquing ('Identity map') through Context objects.
    To be able to obtain the same class instance for when the same data (entity instance) is fetched twice, you can use Context objects which allow you to have unique entity objects locally within scopes. More information...
  • Multi-versioning of entity fields
    The values of an entity inside an entity object can be versioned so you can roll back to a previous version of a field value. More information...
  • Advanced lazy loading/load on demand.
    Lazy loading / load on demand, available in SelfServicing, lets you load related entity data automatically when a navigator property is read. You can control whether this happens every time or just once
  • Built-in value validation for string/array length and precision/scale ranges
    The runtime framework automatically validates values if they cause an overflow with respect to maximum string/array lengths or with respect to precision/scale for decimal typed fields. Validation is based on field aspects defined in the entity model.
  • Persistence of 'dirty' (changed) data only
    Update and Insert queries only affect the fields which are changed ('dirty')
  • Flexible concurrency control mechanism
    The runtime framework comes with a flexible, IoC/Dependency Injection friendly mechanism which allows you to formulate your own concurrency system, so you don't have a pre-fab solution which might not fit your needs. More information...
  • Full WCF RIA Services support New!
    Expose your LLBLGen Pro runtime framework powered domain layer in a WCF RIA application using the VS.NET tools for WCF RIA services. WCF RIA services is a Microsoft technology for .NET 4 and typically used within silverlight applications.
  • Full XML serialization support
    Entity graphs in-memory are serializable and deserializable to/from XML in a couple of different XML formats and contain change tracking information.
  • Full XML Webservice / WCF support
    Entity graphs can be used with WCF services/Web services and change tracking information is included in the XML, using efficient XML formats. More information...
  • Full binary serialization support
    State-of-the-art binary serialization support with own binary serialization pipeline for extremely fast serialization and de-serialization as well as advanced data compacting for keeping serialized data small. More information...

Querying related

  • Full Linq support with our own Linq to LLBLGen Pro provider
    Besides our own compile-time checked querying system, you can use Linq queries to query your domain. Our linq provider is built on top of our own querying system and you can use them both together in your own code. The Linq provider is extensible using flexible FunctionMapping definitions to map your own .NET methods onto SQL constructs to be used in a Linq query. More information...
  • Powerful projection framework
    The runtime framework supports the creation of custom projections of a query created from one or more related entities and can project the resultset to any type or an untyped object like a datatable. The projection system is extensible and easily adjusted with custom projectors for your own needs. More information...
  • Server-side paging support
    All select / fetch queries support server-side paging or when server-side paging isn't possible it will switch to client-side paging to perform the required action on the client using DataReader based paging (read as much rows as required after which the DataReader is closed). Server-side paging is done using efficient paging queries, tailored for the RDBMS at hand, utilizing native paging mechanisms if available. More information...
  • Fetch a resultset as a datareader
    Any query, be it for fetching entities, a stored procedure call or a custom projection, is obtainable through a datareader, so you can handle the query processing directly 'on the metal' if you like. More information...
  • Exclude fields from entity fetches
    If you want to exclude one or more fields from an entity when fetching it (or when fetching a collection of these entities), for example because they contain large data and you don't need it at that point, you can do so by specifying them in the query. Later on, you can fetch them in an additional, efficient batch query if you need the data. More information...
  • Advanced Prefetch functionalty of related entities/eager loading.
    The runtime framework allows efficient loading of entity graphs using 'prefetch paths', which define which related entities should be loaded using which filters. More information...
  • Ability to execute delete/update statements directly on the database
    The runtime framework allows update and delete queries to be executed directly onto the database for fast bulk operations using single statements. Queries can be created using typed, entity based query objects. More information (option 3, updates)...
  • Dynamic relationship/join support
    Normally, you'd use the relationships defined in the entity model, but if you need to join two entities in a query which don't have a pre-defined relationship in the model, you can.
  • Fully object oriented, typed query and sorting mechanism
    The runtime framework comes with its own rich, compile-time checked querying system which has the following highlights:
    • Table joins seen as object relationships and formulated by adding relationship objects to a collection
    • Compile time checked filter construction, with easy to formulate constructs like (CustomerFields.CompanyName=="Solutions Design")
    • Ansi joins and non-ansi joins supported
    • Join hints can be specified for fine grained control over how joins should take place
    • Support for weak (optional) and strong relationships (1:1, 1:n, m:1), ad-hoc (dynamic) or pre-defined in the model.
    • Predicate specification through construction of predicate objects. You can add your own predicate types.
    • Custom filter support in JOIN clauses
    • All constructions are database-generic, unless a database specific predicate class is used
    • Support for sorting, group by, duplicate filtering (distinct) and resultset limitations (number of rows returned), which automatically switches to efficient, datareader based, client-side distinct/row filtering if these constructs can't be emitted into the SQL query due to violating types/sort clauses which otherwise would cause an error
    • Full support for nested filter constructions
    • Support for full text search on SqlServer
    • Support for set based comparisons (sub-queries), expression based comparisons, having clauses in group by collections, like comparisons (case sensitive and case insensitive)
    • Scalar query support for easy and efficient retrieval of values from the database
    • SQL Expression and aggregate function support in all areas of the query mechanism for as much flexibility as possible when formulating complex queries.
    • Join an entity multiple times using aliases for advanced queries spanning multiple times the same entity.
    • Polymorphic queries in inheritance scenarios
    • Entity type filters in inheritance scenarios
    • Database function call support, which allows you to call any database function inside an expression.
    • CASE support for fine-grained select list tweaking.
    • Derived table support for joins with queries.
    More information...
  • Support for Group By, Having and Aggregate functions
    You can formulate complex group by queries, including having clauses and use all aggregate functions supported by the supported databases. More information...
  • Advanced Sql Expressions
    Formulate complex expressions using entity fields defined in your model and use them in query projections, filters and scalar queries. More information...
  • Scalar query support
    Using the query mechanism, formulate compile-time checked scalar queries and use them in projections or filters, or fetch a single scalar value, based on - for example - an aggregate function or expression.
  • Derived table support
    If you need to join with the resultset of a query, or want to use a projection on top of a resultset, you can do so with the runtime framework's support for derived tables. More information...

Generated code related

  • Entities are based on custom classes, not on datasets/datatables.
    LLBLGen Pro Runtime Framework is a non-POCO framework where every entity class is derived from a central base class.
  • Extensible generated code
    The generated code is extensible (to for example override virtual methods to extend /tap into the runtime framework) through partial classes or through user code regions which contents are preserved across code generation cycles. More information...
  • Full implementation of IBindingList, ITypedList, INotifyPropertyChanged and IEditableObject.
    The generated code is ready to be used with MS' databinding functionality in the different UI frameworks.
  • Full support for design time databinding
    Design time databinding in Winforms and WPF.

General

  • All databases supported by the designer are fully usable with the LLBLGen Pro runtime framework.
    Every RDBMS supported by the designer is also supported by the runtime framework, offering all the features for each database.
  • Typed Views mapped onto table, view or stored procedure resultset
    A Typed View mapped onto a view, table or stored procedure resultset is a typed datatable which can be used for read-only data access using an easy-to-use querying system.
  • True database independent code with Type Converters.
    You can map a field of any .NET type to any table/view field of any .NET type using TypeConverters which convert the values back/forth transparently behind the scenes.
  • Native Enum support New!
    Entity fields can have an Enum type as their type without special type converters, and this can be used in inserts/updates/deletes and selects and also filters
  • Flexible, DbProviderFactory based query engines New!
    All query engines are DbProviderFactory based and aren't tied to a specific version of the used ADO.NET provider.
  • Support for multiple entity classes with a relationship mapped onto the same target New!
    This is called 'entity splitting' where a new entity is mapped onto the same target and has optional (nullable) fields and a 1:1 relationship between its PK and the PK of an other entity mapped onto the same target. Useful when large fields have to be in a separate entity as they're optional.
  • Fine-grained tracing framework
    The runtime framework offers fine-grained tracing of actions taken on the entity objects, which queries / SQL is generated and executed, which actions were taken during persistence operations and much more. This gives a deep insight in what's going on behind the scenes of the runtime framework and makes it easier to fix problems. More information...
  • Support for ADO.NET transactions, ADO.NET Transaction save-points, COM+ transactions and System.Transactions
    The runtime framework offers wide support for all transaction mechanisms you want to use, be it native ADO.NET transactions or for example System.Transactions based transactions. Savepoints, for in-transaction rollbacks to save points within the transaction are also supported on the databases which support these actions. More information...
  • Full ASP.NET two-way databinding support using our own datasource control.
    The runtime framework comes with a datasource control (one for Adapter and one for SelfServicing) which offers rich, two-way databinding support for ASP.NET based technologies like ASP.NET webforms, MVC and the like. More information...
  • Partial classes support
    All generated code is partial classes aware and easily extended.
  • Support for stored procedures
    Call an action stored procedure (which doesn't return a resultset) or a retrieval stored procedure (which does return one or more resultsets) using generic simple code, like it's a normal method in your .NET code. You can also add stored procedure calls to the Unit of Work objects, or grab the call as a query and use it as a source for a projection. More information...
quote
As a contractor, I make more money using LLBLGen Pro. I've been able to take on more clients and ship products faster because LLBLGen Pro saves me time.

My clients appreciate that I use LLBLGen Pro, because the code it creates is easy to read and well documented. The layer it produces is easily expandable, and my customers do not feel locked-in to something they can't change. LLBLGen Pro allows my customers to grow without breaking their existing products.

LLBLGen Pro allows me to focus on the details of the application, not the drudgery of talking to databases. I'm more productive, and my code is more reliable, because LLBLGen Pro handles the creation of a solid foundation.

Because LLBLGen Pro speaks to so many database formats, so do I! My client base has expanded because I use LLBLGen Pro with whatever database my client has chosen.

LLBLGen Pro is an investment that pays in customer satisfaction.
quote
Scott Wallace
 
__