LLBLGen Pro v5.3 Beta has been released!

We've released LLBLGen Pro v5.3 beta! Since the EAP we’ve added new functionality and tweaked some things too, based on feedback. Below is the full list of what’s new in v5.3 Beta, and this is also the list of new stuff we’ll include in v5.3 RTM, which is expected within a week or two.

What's new in the LLBLGen Pro designer

Firebird 3.0 support. LLBLGen Pro now supports Firebird 3.0, in both designer and LLBLGen Pro runtime. This effectively means that the new Boolean type is now fully recognized. The identity field support of Firebird 3.0 will be added as soon as the Firebird Client supports this.

The latest releases RSS feed contents is now shown on the Hometab. This way you know when a new release is posted on the website.

Default sequences for Postgresql in model first. When using model first with PostgreSql, the designer will for fields which have a sequence set in their field mappings set the sequence as the default sequence in the meta-data and will generate the sequence as the default value in DDL SQL scripts. This is needed for ORMs like Entity Framework 6 which don't have sequence support in their mappings and rely on default values for identity/sequence support.

New Project setting: StoreTimeLastSyncIntoProject. A new project setting (under Entity model - General) has been added: StoreTimeLastSyncIntoProject which, when true (default) will make the designer store the last sync time with database or model with the catalog / schema. This setting can be switched off to e.g. avoid projects having merge conflicts based on time/date values of last-sync

What's new in the LLBLGen Pro Runtime Framework

New functionality / changes

.NET Standard 2.0 support. The LLBLGen Pro Runtime Framework can now be used on .NET Standard 2.0 supporting platforms like .NET Core 2.0 and Xamarin. More information

New RuntimeConfiguration system to configure LLBLGen Pro Runtime Framework specific behavior and settings in code instead of in .config files. Mainly meant for .NET Standard 2.0 using applications but it's also available for .NET Full.More information

The Plain SQL API now has a FetchScalarQuery<T> method to retrieve a scalar value from the DB using a plain SQL query. More information

Query tagging. Linq and QuerySpec have the ability now to let you mark (tag) the SQL query or queries generated by the runtime with a tag. This tag is a string which is added as a comment before the actual query string. This way you can easily track back the SQL query on a database server with the actual calling code without a profiler / stacktrace. It's a low-impact way to make sure you can track down information at runtime in the future. More information: Linq, QuerySpec.

Small changes

The Runtime Framework is now compiled against .NET 4.5.2

QuerySpec: When a scalar query is executed using FetchScalar<T> and T isn't a nullable type and the query returns a NULL value, the cast to T would result in a Null reference exception. We now added a check first which will throw an InvalidOperationException if a null value was returned and the type specified isn't a nullable type.

Lambda caches and factory caches are now using a ConcurrentDictionary instead of a Dictionary per thread, which should save some memory in large applications.

QuerySpec: an extension method has been added for ISortClause, DontEmitAliasForExpressionAggregateField, so the EmitAliasForExpressionAggregateField flag can be set using the fluent interface. See the LLBLGen Pro Runtime Framework Reference Manual for details.

A new exception class has been added: ORMConfigurationException. This exception is thrown when an error is detected in the RuntimeConfiguration usage.

Prefetch path fetches with a context are now using faster merges as the linear searches caused by the context usage in collections during merges are now no longer happening. This is done when the fetch is into a new graph. An existing graph will do the linear searches during merge as before.

Nuget: the packages for DQEs now reference a specific ORMSupportClasses version, which means you always have to update both when referencing a specific DQE package version. Previously we defined a range of [currentversion-nextmajorversion) but that is too large and causes 'downgrades' for .NET Core due to a change in the way downgrade warnings are handled by the .NET Core tooling.

Field compare value predicate now detects value truncation for variable string typed parameters. If it detects truncation, it will emit "1=0" instead of the actual predicate, followed by a comment to make the predicate result in 0 rows. Value truncation occurs if the DbParameter's Value property is set to a value which has a length longer than the 'size' property. The size property of the parameter is set to the length of the field compared against. So if you compare a varchar(20) typed field F to a string with length 25, you'll get 1=0 instead of the comparison of the first 20 chars of the string with the field, which could lead to matches which are unintentional.

Field value equality comparisons of byte array values are now more optimal.

Firebird 3.0 support. LLBLGen Pro Runtime Framework now supports Firebird 3.0. This effectively means that the new Boolean type is now fully recognized. The identity field support of Firebird 3.0 will be added as soon as the Firebird Client supports this.

What's new in the Entity Framework support

The generated POCO classes for CodeFirst / DbContext as well as for EF Core 1 and 2 now have a partial method OnCreated() which is called at the end of the ctor. This can e.g. be used for custom types for navigators to be created automatically, e.g. when a specific sorted list is needed for a specific navigator.