Please note that version 9 is still in beta. For documentation on the latest stable release, please change to version 8.
Contribute to Docs Contribute to Docs

Database Setup

This section shows how to setup and configure your database connection in your Piranha application and is intended for users who wants to create their application from scratch and not have this code generated by any of the available project templates.

More information on Entity Framework Core can be found here.

About Entity Framework Core

Even though Piranha can be used with any kind of data mapper or data layer we only provide packages for Entity Framework Core.

Entity Framework is a modern object-database mapper for .NET provided by Microsoft. It supports LINQ queries, change tracking, updates, and schema migrations. EF Core works with many databases, including SQL Database (on-premises and Azure), SQLite, MySQL, PostgreSQL, and Azure Cosmos DB.

Schema Migrations

In Entity Framework schema migrations are database dependent, this means that you need different packages depending on which database you are targeting. It also means that you can't just copy a database schema from one type of database to another. With this said it's always easier to use the same type of database for development as you will use in production.

Officially supported databases

These are the different databases that we currently support.

Database Context Name NuGet Package
MySql MySqlDb Piranha.Data.EF.MySql
PostgreSql PostgreSqlDb Piranha.Data.EF.PostgreSql
SQL Server SQLServerDb Piranha.Data.EF.SQLServer
SQLite SQLiteDb Piranha.Data.EF.SQLite

Configuring EF Core

Here we will take a look at the basics for configuring Piranha for Entity Framework Core. Specifics on the different database packages can be found in the Databases article in the Architecture section.

ConfigureServices

The current Entity Framework context that should be available should be configured in the method ConfigureServices in Startup.cs. In this example we're using the DbContext for SQLite as shown in the table above, but this should be changed to the database you're currently using.

public void ConfigureServices(IServiceCollection services)
{
    services.AddPiranha(options =>
    {
        ...

        options.UseEF<SQLiteDb>(db =>
            db.UseSqlite("Filename=./PiranhaWeb.db"));
    });
}

Additional Configuration

Connection Pool Size

By default Piranha uses a connection pool size of 128, which is the default size of Entity Framework. This can be configured in the application startup by setting the parameter poolSize when setting up the connection.

public void ConfigureServices(IServiceCollection services)
{
    services.AddPiranha(options =>
    {
        ...

        options.UseEF<SQLiteDb>(db =>
            db.UseSqlite("Filename=./PiranhaWeb.db"), poolSize: 32);
    });
}

More Information

For more information, please refer to the Databases article in the Architecture section.