Compiling the generated code

This section describes how to compile the generated code for C# and VB.NET, which references to add and how to use it in your own projects.

Compiling

The easiest way to compile the generated code is to load the generated Visual Studio.NET project file(s) into Visual Studio.NET or another IDE which can read these files and compile the project. The generated Visual Studio.NET projects by default have the proper references set up.

If you're upgrading to a newer version of LLBLGen Pro, it's recommended to check whether your project indeed references the correct runtime libraries, as VS.NET sometimes may point to previous versions if they're still installed on your system. After you have generated the code and checked whether the right references are available in your VS.NET project, you can compile the code into a working assembly. This assembly can then be referenced from your business logic project and other projects which want to use the generated functionality.

Nuget

Most assemblies are available on Nuget as well as shipped with the designer installer. With every new build of the installer we ship, we also make sure the assemblies on nuget will be updated.

Please use the URLs below for visiting the package pages on nuget:

Info

Starting with v5 we no longer support Sybase ASA and ASE. We published the sourcecode for the drivers and DQEs for these databases on github: Sybase ASE code repository on GitHub | Sybase ASA code repository on GitHub

Dependencies

The DQE packages come with a single DLL, the DQE dll, and have a dependency on the ORMSupportClasses package. The ORMSupportClasses package contains both the .NET 3.5 build and the .NET 4.5 build with async support: if your project targets .NET 4.5 or higher you automatically will reference the .NET 4.5 build with async support.

The DQE dlls don't depend on any ADO.NET provider assembly as they all use the .NET DbProviderFactory system and don't need the using project to reference an ADO.NET provider. The ADO.NET provider has to be present on the system, with a valid factory definition in either machine.config or in the application's .config file. Most ADO.NET provider installers take care of that for you.

Available assemblies

Below a brief description of each runtime library assembly is given and when it should be referenced.

Info

Starting with LLBLGen Pro v4.0, the SD.LLBLGen.Pro.LinqSupportClasses.NET35 and SD.LLBLGen.Pro.QuerySpec assemblies have been merged into the SD.LLBLGen.Pro.ORMSupportClasses assembly so there's no need anymore to reference these. If you migrated your project to v4.0 or higher, and it still references the LinqSupportClasses and/or QuerySpec assemblies, please remove these references.

SD.LLBLGen.Pro.ORMSupportClasses assembly

LLBLGen Pro ships with two versions of this assembly, one general assembly compiled against .NET 3.5, and one compiled against .NET 4.5 with additional async/await code. Both assemblies are called SD.LLBLGen.Pro.ORMSupportClasses.dll. The .NET 4.5 one is located in the CompiledRuntimeLibraries\NET4.5 folder and contains all code of the regular, .NET 3.5 build. The ORMSupportClasses assembly is referenced by all generated code projects, and you also need to reference it from any project which uses the classes from the generated code. This assembly contains the LinqSupportClasses and QuerySpec code as well.

When you generate code for .NET 3.5 or .NET 4.0, the normal, non-async version is referenced, and you should reference that one from you own code as well. When you generate code for .NET 4.5, the async version from the .NET 4.5 folder is referenced, and you should reference that version in your code as well.

SD.LLBLGen.Pro.ORMSupportClasses.Web assembly

LLBLGen Pro ships with a specific ORM Support Classes assembly for web development: SD.LLBLGen.Pro.ORMSupportClasses.Web.dll. This assembly contains the DataSourceControls for two-way databinding in webforms. It also contains the designers for these controls; adding the controls from this assembly to the VS.NET toolbox allows you to drag/drop DataSourceControls onto webforms. When your web application uses the LLBLGen Pro datasource controls, you have to reference this assembly from the Web project.

SD.LLBLGen.Pro.DQE.yourDatabase assembly

All SQL is generated by a Dynamic Query Engine or DQE in short. These engines are database specific and each supported database has its own assembly: SD.LLBLGen.Pro.DQE.yourdatabase.dll where yourDatabase is for example SqlServer, Oracle, Firebird etc. LLBLGen Pro ships with one version of this assembly per database, which is usable for all .NET versions supported: .NET 3.5 or higher.

The DQE assembly has to be referenced in the generated code project for SelfServicing and the database specific project of Adapter. You only need to reference the DQE assembly of the database types which are used in your LLBLGen Pro project: e.g. if your project in the LLBLGen Pro designer targets SQL Server, you only need to reference the SQLServer DQE assembly. 

SD.LLBLGen.Pro.ODataSupportClasses assembly

LLBLGen Pro ships with full support for WCF Data Services, the OData implementing framework by Microsoft. To create a WCF Data Service service using the generated code, you have to reference this assembly in your project which implements your Data Service class. .NET 4.0 or higher specific. The ODataSupportClasses are compiled against the WCF Data Services Server assembly available from nuget.

(Optional) Type converter assemblies

If you're using a custom type converter in your project, you have to add a reference to that type converter assembly which contains the type converter(s) used. In SelfServicing, you reference this assembly in the single generated code project, in adapter you reference this assembly in the DBSpecific project. LLBLGen Pro doesn't require a type converter dll for the built-in system type converters. 

DbProviderFactory configuration

LLBLGen Pro uses the DbProviderFactory system of .NET. This means that you don't need to reference the ADO.NET provider assembly in your generated code. In general the ADO.NET provider installation programs also install a definition of the ADO.NET provider's DbProviderFactory in the machine.config file of the .NET CLR used.

In general installers for each ADO.NET provider make sure the DbProviderFactory is registered in machine.config. It's not enough to reference an ADO.NET provider package from nuget, you have to use an installer. For PostgreSql, Npgsql provides this installer on GitHub in the Releases section.

Using the compiled assembly/ies in your own projects

When compilation of the generated code was successful, you can reference the compiled dll from your project, which holds the code using the generated classes, or reference the generated code projects directly. Furthermore, you have to copy the generated app.config file to the executable project which references (indirectly perhaps via another assembly) the generated code.

If you are developing a web project, you have to copy the appSettings tag and its contents of generated app.config file to the web.config file of your application, inside the configuration tag. This will make sure the generated code will be able to read the connection string.

Connection Strings

A .config file (app.config or web.config) can have a separate connection strings section in which you can store the connection string as well. This is supported by LLBLGen Pro. A connection string specified in the ConnectionStrings section in the config file is read first. If a connection string with the name specified in the generated code is found there, that connection string is used. If it's not found, the appSettings section is consulted.

Please look at the generated app.config file in the generated code (for Adapter, this file is located in the DBSpecific vs.net project) to obtain your connection string definition.

Requesting the Runtime libraries build number and version number

You can request the version of the runtime libraries you're currently using in your code using:

string version = SD.LLBLGen.Pro.ORMSupportClasses.RuntimeLibraryVersion.Version + "." + 
                    SD.LLBLGen.Pro.ORMSupportClasses.RuntimeLibraryVersion.Build;
Dim version As String = SD.LLBLGen.Pro.ORMSupportClasses.RuntimeLibraryVersion.Version & "." & _ 
                            SD.LLBLGen.Pro.ORMSupportClasses.RuntimeLibraryVersion.Build

The runtime libraries also use a file version attribute, which is visible when you rightclick in windows explorer on the assembly dll and select 'Properties' and after that view the Version tab. This version has the following format: 5.0.x, where x is the minor revision number of the LLBLGen Pro build. LLBLGen Pro uses SemVer versioning, starting with v5.0