We've released LLBLGen Pro v5.6 beta and it comes with a lot of new features. Let's look at a couple of them.
Better spatial type support
For years we've relied on the Microsoft.SqlServer.Types package to supply SqlGeometry and SqlGeography types for SQL Server. This worked well but
had the disadvantage that the dll had to be discoverable to use the types and it was a hassle to make it work in the designer because the dlls were
distributed either with SQL Server itself or through a nuget package.
We've solved this by adding our own spatial types for the designer which are then converted to the spatial types for the particular database in question
at code generation time. At the same time we could now support spatial types on PostgreSQL as obviously for that database the SQL Server type package
For you, the user, it gets simpler because you don't need to install the SQL Server types somewhere anymore: the designer will automatically convert
the Microsoft types in older projects to the new internal types and when modeling your entity model you can use the internal types without installing
anything. See for more information the
documentation regarding spatial types and the LLBLGen Pro designer.
LLBLGen Pro Runtime Framework and new spatial types
For our own O/R framework, the LLBLGen Pro Runtime Framework, we've added spatial type support for PostgreSQL, next to the already supported spatial types
for SQL Server. This is done through the NetTopologySuite package from NuGet.
New startup dialog and parallel processing at startup
To make the startup and processing of the designer even faster than it already was we added a startup dialog:
The startup dialog not only makes you focus on the tasks ahead, but it also allows us to do the necessary startup processing behind the scenes without
you having to wait on it for completion. We optimized a lot of tasks in the designer and make them run in parallel at startup using the .NET TPL library.
This work is started as soon as the startup dialog is shown and when you load the project you want to work on, it has completed its job, resulting in
a smooth startup experience.
Automatic code generation on project save
As a continuation to automate tasks in the designer we've added automatic code generation on project save, which can be enabled in the project settings (it's off by default). As soon as you've configured the code generation tasks, e.g. where to generate code, for which .NET version etc., saving your project will generate the source code in the background. This makes it even easier to simply make a change and have things updated. See the documentation for more information.
Generating code automatically in the background comes with the requirement that code generated for elements that e.g. are no longer there or have been renamed is cleaned up. The designer now also has the ability to do a fine-grained clean up of generated code so the code base on disk reflects your entity model, without removing files which you added yourself. See the documentation for more information.
Generate ad-hoc templates with a code generation task
Our code generation system is very flexible and powerful but all that power also comes with a bit of complexity which can be a bit daunting when you just want to run one or two extra templates when code is generated. E.g. when you want to generate a file using a template which simply lists which entities are in the project and which fields they have, it's not trivial to get that template executed.
LLBLGen Pro v5.6 comes with the ability to specify one or more simple files which enlist the templates you want to run additionally to the general preset you'd run for a task. Each time you generate code, these ad-hoc templates will be executed as well. They're ideal for adding small parts of output to your generated code without going all in with the code generation system, and if you need more power, you can re-use your templates in a normal preset. See the documentation for details about ad-hoc templates in v5.6.
Easy editing attribute definitions in bulk
The LLBLGen Pro designer offers the ability to define attributes, additional interfaces and namespaces for elements using rules, so they're applied to all elements that match the rules in the generated code. Rules can cover the majority of cases but still you might want to add attributes, additional namespaces and interfaces to a variety of elements by hand.
Doing that through the UI one element at a time is of course time consuming so to make this easier, we have adjusted the GUI which already offered setting value management in bulk:
The aptly named Bulk Output Setting Values Manipulator tool in the designer will let you add/change/remove attribute definitions, additional namespaces and interfaces and of course setting values for various elements in one go.
Much much more...
There's so much more in this release! How about:
- Entity Framework Core v2.2 support
- .NET 4.8 support
- Visual Studio 2019 integration
- More skins/colors
- Better dark theme support in various UI elements
- Search ability in various UI elements
- Lots of small changes/fixes
See for the full list the documentation.
This release was mainly about the designer, but we did add some features in the runtime as well:
- Spatial type support for PostgreSQL
- Breadth-first search based graph traversal in entity graph persistence
- Empty resultsets are now cached
- Optimized prefetch paths when parent nodes are just 1 element
- Target hint and Temporal Table predicates can now be specified on prefetch path nodes in Linq and QuerySpec.
See the LLBLGen Pro Runtime Framework documentation for details.
How to get LLBLGen Pro v5.6 beta?
If you have an active subscription, it's a free release for you and it's available under 'My Account' in the site menu. As this is a beta, please provide any feedback you might have in the beta forum.
We expect an RTM release within 3 weeks.