Code Generation Addon

Main article about Code Generation addon is here


Code Generation addon makes already pretty easy BGDatabase API even easier. Once this addon is enabled - database will use generated classes instead of basic BGEntity while populating table rows. Each generated class has additional properties/methods to access the data.

What properties/methods are generated?

The full list of generated methods/properties can be found in main article about code generation)


All our example projects use CodeGen addon

Short explanation

Here is an example: lets assume you have a table named "MyTable" which has one single field: intField of type int.

To access it without CodeGen you would use something like this: var intValue = entity.Get<int>("intField");

As you can see, you should provide field name and field type.

With CodeGen you would use something like this var intValue = entity.intField;

So all fields with their types will be generated for you for maximum ease of use.

The only drawback CodeGen has - you need to regenerate the classes each time you change database structure (e.g. adding/removing tables or fields)

Parameter name Description
Code Generator Class to use for code generation (use default one)
Source file Source file to use for generated C# classes. All classes will be put into one single .cs file, which should be under your project folder
Package Package (C# namespace) for generated classes. For example MySpace. You can safely leave this setting blank.
Class names prefix Prefix to use for each class name. So if you use E_ prefix, the final class for MyTable table will be named E_MyTable. We have multiple code generators, so using different prefixes for different code generators helps to differentiate generated classes and avoid naming collisions
Field names prefix Prefix to use for each generated property name. So if you use f_ prefix, the final name for intField field will be f_intField. You can safely leave this setting blank.
Entities prefix [Optional] Optionally, you can generate properties for each entity. After that, you can access each entity directly using these properties. Read more about it here: Generate a property for each entity
Reference class postfix/Reference list class postfix [Optional] Optionally, you can generate reference class, which can be used to reference database row easily. Read "Reference classes" section in the main article for more information. Set these parameters to valid C# literals (for example _Ref and _List_Ref) to enable code generation