MySql

.NET Framework

Registering MySql Provider

MySQL has a .NET provider named MySql.Data. You need to first install it in MyProject.Web:

Install-Package MySql.Data -Project MyProject.Web

If you didn't install this provider in GAC/machine.config before, or don't want to install it there, you need to register it in web.config file (MySql.Data NuGet package already does this on install):

<configuration>
  // ...
  <system.data>
    <DbProviderFactories>
      <remove invariant="MySql.Data.MySqlClient"/>
      <add name="MySQL Data Provider" 
           invariant="MySql.Data.MySqlClient" 
           description=".Net Framework Data Provider for MySQL"
           type="MySql.Data.MySqlClient.MySqlClientFactory, 
                 MySql.Data, Culture=neutral,
                 PublicKeyToken=c5687fc88969c44d" />
     </DbProviderFactories>
  </system.data>
  // ...

Setting Connection Strings

Next step is to replace connection strings for databases you want to use with MySql:

Make sure you replace connection string parameters with values for your server

<connectionStrings>
    <add name="Default" connectionString="
            Server=localhost; Port=3306; Database=Serene_Default_v1; 
            Uid=root; Pwd=yourpass"
        providerName="MySql.Data.MySqlClient" />
        
    <add name="Northwind" connectionString="
            Server=localhost; Port=3306; Database=Serene_Northwind_v1; 
            Uid=root; Pwd=yourpass" 
        providerName="MySql.Data.MySqlClient" />
</connectionStrings>    

Provider name must be MySql.Data.MySqlClient for Serenity to auto-detect dialect. Read notes above to override default dialect.

MySql uses lowercase database (schema) and table names, but doesn't have the case sensitivity problem we talked about Postgres.

Configuring Code Generator

Sergen doesn't have reference to MySql provider, so if you want to use it to generate code, you must also register this provider with it.

Sergen.exe is an exe file, so you can't add a NuGet reference to it. We need to register this provider in application config file.

It is also possible to register the provider in GAC/machine.config and skip this step completely.

Locate Sergen.exe, which is under a folder like packages/Serenity.CodeGenerator.1.8.6/tools and create a file named Sergen.exe.config next to it with contents below:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <system.data>
    <DbProviderFactories>
      <remove invariant="MySql.Data.MySqlClient"/>
      <add name="MySQL Data Provider" 
           invariant="MySql.Data.MySqlClient" 
           description=".Net Framework Data Provider for MySQL"
           type="MySql.Data.MySqlClient.MySqlClientFactory, 
                 MySql.Data, Culture=neutral,
                 PublicKeyToken=c5687fc88969c44d" />
     </DbProviderFactories>
  </system.data>
  <appSettings>
    <add key="LoadProviderDLLs" value="MySql.Data.dll"/>
  </appSettings>
</configuration>

Also copy MySql.Data.dll to same folder where Sergen.exe resides. Now Sergen will be able to generate code for your MySql tables.

.NET Core

Registering MySql Provider

MySQL has a .NET provider named MySql.Data. You need to first install it in MyProject.AspNetCore:

Open project.json and add package as follows:

{
  "dependencies": {
    // ...
    "Serenity.FluentMigrator.Runner": "1.6.903",
    "MySql.Data": "7.0.6-IR31"
  },

Make sure you have Serenity.FluentMigrator.Runner 1.6.903+

Open Initialization/Startup.cs file, register this factory in Serenity:

DbProviderFactories.RegisterFactory(
  "System.Data.SqlClient", SqlClientFactory.Instance);
  
DbProviderFactories.RegisterFactory(
  "MySql.Data.MySqlClient",
   MySql.Data.MySqlClient.MySqlClientFactory.Instance);

Configuring Code Generator

As of writing dotnet-sergen doesn't yet support any databases other than Sql Server.