What's new/changed in LLBLGen Pro Runtime Framework v3.1?
Below you'll find a list of changes, additions and important fixes in the 3.1 release
of the LLBLGen Pro Runtime Framework. It's recommended you also browse the
Migrating your code
section for breaking changes and how to migrate your current project with
generated code to v3.1.
New functionality / changes
General
- Entity creation is now up to 30% faster and takes 5% less memory.
Creating an entity object has been optimized further by tweaks inside
the framework to make instantiating an entity object up to 30% faster.
It now also takes up to 5% less memory than in v3.0
- Prefetch Path node merging is now up to 20-25% faster.
Setting entity references required the creation of a new relationship
object. As this relationship object is always used internally it could
be cached (as it's used for syncing only). This increases performance by
20-25% in the merging functionality.
- Entity fetches are now up to 20% faster. A large number of
tweaks have been applied to make entity fetches up to 20% faster than in
v3.0.
- WCF RIA support has been added. It's now possible to use 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.
More
information...
Runtime Libraries
Added
- SQL Server DQE compatibility level is now per instance.
(Usable in Adapter). It's now possible to set the compatibility level of
the SQL Server Dynamic Query Engine (DQE) per instance of the DQE
instead of the global setting it was before. The global setting is still
available and is used as the default value for the compatibility level
per-instance. You can use this to switch between CE Desktop and normal
SQL Server compatibility per DataAccessAdapter instance.
More information...
- Support for COUNT_BIG aggregate function (SQL Server specific).
The aggregate function COUNT_BIG has been added to the list of available
aggregate functions to be used in the framework.
Changed
- (SelfServicing) IEntityCollection now has definitions for
DeleteMulti(params)/UpdateMulti(params). The interface has been
update to have these methods which are implemented on the base class
since v3.0. You can now utilize these methods through the
IEntityCollection interface.
- Row limits in SQL queries are now emitted regardless of the
presence of 'Distinct'. In v3.0, a Dynamic Query Engine (DQE)
switched to client-side row limiting if duplicates weren't guaranteed,
even though there was no reason to do so. This has been changed: the row
limit statements (e.g. 'TOP' on SQL Server) are emitted into the SQL
query always. For the resultset it makes no difference, it will make a
difference with respect to query performance.
- It's now possible to override the DefaultView creation in an
entity collection. The DefaultView property on an entity collection
now calls into a virtual method CreateDefaultEntityView. This
method can be overriden to create your own EntityView(2)<T> instance
instead.
- InitialLONG/LOBFetchSize values are now properly set on ODP.NET
DbCommands (Oracle specific). ODP.NET defines two properties on the
OracleCommand object which allow callers to specify what to do with
large object data when the query is executed. In previous versions these
properties weren't properly set, causing an extra roundtrip in some
cases. They're now set to inline the data into the resultset, resulting
in one roundtrip per query.
- LongCount in Linq now returns 64 bit values on SQL Server
databases which support COUNT_BIG. In previous versions LongCount
returned the same value as Count, in v3.1 LongCount returns the value
returned by COUNT_BIG executed on the database. If your database doesn't
support COUNT_BIG, LongCount will have the same effect as Count, and
will return the 32bit result of the Count() aggregate function.
Documentation
The documentation now contains a
deep
performance tuning guide to help LLBLGen Pro runtime framework users
solve performance bottlenecks in their applications.