Custom database adapters

If you want to use DbConnectionPlus with a database system or a database connector that is not supported out of the box, you can implement a custom IDatabaseAdapter:

using RentADeveloper.DbConnectionPlus.DatabaseAdapters;

public class MyDatabaseAdapter : IDatabaseAdapter
{
    // Write a class that implements RentADeveloper.DbConnectionPlus.DatabaseAdapters.IEntityManipulator and
    // return it here.
    public IEntityManipulator EntityManipulator => new MyEntityManipulator();

    // Write a class that implements RentADeveloper.DbConnectionPlus.DatabaseAdapters.ITemporaryTableBuilder and 
    // return it here.
    public ITemporaryTableBuilder TemporaryTableBuilder => new MyTemporaryTableBuilder();

    public void BindParameterValue(DbParameter parameter, object? value)
    {
        ...
    }

    public string FormatParameterName(string parameterName)
    {
        ...
    }

    ...
}

Then register your custom database adapter before using DbConnectionPlus:

using RentADeveloper.DbConnectionPlus.DatabaseAdapters;

DbConnectionExtensions.Configure(config =>
{
    config.RegisterDatabaseAdapter<MyConnectionType>(new MyDatabaseAdapter());
});

You can also create an extension method for convenient registration:

namespace RentADeveloper.DbConnectionPlus.Configuration;

public static class MyCustomConfigurationExtensions
{
    public static DbConnectionPlusConfiguration UseMyCustomDatabase(this DbConnectionPlusConfiguration configuration)
    {
        configuration.RegisterDatabaseAdapter<MyConnectionType>(new MyDatabaseAdapter());
        return configuration;
    }
}

Then register it like any built-in adapter:

DbConnectionExtensions.Configure(config => config.UseMyCustomDatabase());

See SqlServerDatabaseAdapter for an example implementation of a database adapter.