Database specific features for PostgreSQL

Statement preparation

Statement prepartion is enabled through the connection string, and it could really help performance over time. Please see the Npgsql documentation regarding automatic preparation: https://www.npgsql.org/doc/prepare.html#automatic-preparation

Spatial types

To utilize spatial types with PostgreSQL you have to reference the NetTopologySuite NuGet package. Spatial types are supported on both .NET Framework and .NET Standard. Spatial types are defined in the entity model in the LLBLGen Pro designer.

Array types

Single dimensional array types are supported, using database first modeling. Loading and saving entities on PostgreSQL with array typed fields is supported.

Changing a single value in an array isn't tracked however, as the runtime doesn't do array comparisons value by value, as this can be time consuming at runtime. When you change a single value in an array, mark it as changed manually. See the example below.

// this will change the value at offset 'index' but won't mark 'SomeArrayField' as changed.
customer.SomeArrayField[index] = newValue;
// set the field manually as changed
customer.Fields.SetIsChanged((int)CustomerFieldIndex.SomeArrayField, true);
// the field is now marked as changed and will be persisted. 

Setting the array field to a new array instance will mark it as changed, as the instance is different.

The runtime provides specific extension methods for Linq and QuerySpec to execute PostgreSQL specific operators on array values.