Need help with EFCore.NamingConventions?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

efcore
311 Stars 38 Forks Apache License 2.0 88 Commits 11 Opened issues

Description

Entity Framework Core plugin to apply naming conventions to table and column names (e.g. snake_case)

Services available

!
?

Need anything else?

Contributors list

Naming Conventions for Entity Framework Core Tables and Columns

Nuget

By default, EF Core will map to tables and columns named exactly after your .NET classes and properties. For example, mapping a typical Customer class to PostgreSQL will result in SQL such as the following:

CREATE TABLE "Customers" (
    "Id" integer NOT NULL GENERATED BY DEFAULT AS IDENTITY,
    "FullName" text NULL,
    CONSTRAINT "PK_Customers" PRIMARY KEY ("Id")
);

SELECT c."Id", c."FullName" FROM "Customers" AS c WHERE c."FullName" = 'John Doe';

For PostgreSQL specifically, this forces double-quotes to be added since unquoted identifiers are automatically converted to lower-case - and all those quotes are an eye-sore. But even if we're using another database such as SQL Server, maybe we just hate seeing upper-case letters in our database, and would rather have another naming convention.

Down with same-name identifier tyranny! Simply add a reference to EFCore.NamingConventions and enable a naming convention in your model's

OnConfiguring
method:
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    => optionsBuilder
        .UseNpgsql(...)
        .UseSnakeCaseNamingConvention();

This will automatically make all your table and column names have snake_case naming:

CREATE TABLE customers (
            id integer NOT NULL GENERATED BY DEFAULT AS IDENTITY,
            full_name text NULL,
            CONSTRAINT "PK_customers" PRIMARY KEY (id);

SELECT c.id, c.full_name FROM customers AS c WHERE c.full_name = 'John Doe';

Supported naming conventions

  • UseSnakeCaseNamingConvention:
    FullName
    becomes
    full_name
  • UseLowerCaseNamingConvention:
    FullName
    becomes
    fullname
  • UseCamelCaseNamingConvention:
    FullName
    becomes
    fullName
  • UseUpperCaseNamingConvention:
    FullName
    becomes
    FULLNAME
  • UseUpperSnakeCaseNamingConvention:
    FullName
    becomes
    FULL_NAME

Have another naming convention in mind? Open an issue or even submit a PR - it's pretty easy to do!

Important notes

  • If you have an existing database, adding this naming convention will cause a migration to produced, renaming everything. Be very cautious when doing this (the process currently involves dropping and recreating primary keys).
  • This plugin will work with any database provider and isn't related to PostgreSQL or Npgsql in any way.
  • This is a community-maintained plugin: it isn't an official part of Entity Framework Core and isn't supported by Microsoft in any way.

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.