1

In Entity Framework 6 Code Erstens gibt es einen Weg (vielleicht über Data Annotations oder Fluent API), so dass die von Migrationen generierte Datenbank auch Kleinbuchstaben hat meine Modellklassen haben Pascal Casing Eigenschaften?EF-Code erste Migrationen von Pascal Case-Eigenschaften in Kleinbuchstaben

I.e. Diese Klasse:

public class Person 
    { 
     public int PersonId { get; set; } 
     public string FirstName { get; set; } 
     public string Surname { get; set; } 
} 

dieser Tabelle Karte sollte (das heißt Migrationen sollte diese Tabelle erzeugen):

person 
    person 
    firstname 
    surname 

oder sogar so etwas wie dies wäre schön:

person 
    person_id 
    first_name 
    surname 

P. S. Ich arbeite mit einer MySQL-Datenbank ... Danke

+1

ich habe die gleiche Frage. Ich verwende PostgreSQL, bei dem die Groß-/Kleinschreibung beachtet wird, und ich möchte auch Kleinbuchstaben für Tabellen- und Spaltennamen. Hast du eine Lösung gefunden? –

Antwort

0

Ich habe einige Code in der OnModelCreating Methode umbenennen alle Tabellen, Spalten und Schlüssel etc.

protected override void OnModelCreating(ModelBuilder builder) 
{ 
    // SET LOWERCASE NAMES 
    foreach (var entity in builder.Model.GetEntityTypes()) 
    { 
     // Replace table names 
     entity.Relational().TableName = ToSnakeCase(entity.Relational().TableName); 

     // Replace column names    
     foreach (var property in entity.GetProperties()) 
     { 
      property.Relational().ColumnName = ToSnakeCase(property.Name); 
     } 

     foreach (var key in entity.GetKeys()) 
     { 
      key.Relational().Name = ToSnakeCase(key.Relational().Name); 
     } 

     foreach (var key in entity.GetForeignKeys()) 
     { 
      key.Relational().Name = ToSnakeCase(key.Relational().Name); 
     } 

     foreach (var index in entity.GetIndexes()) 
     { 
      index.Relational().Name = ToSnakeCase(index.Relational().Name); 
     } 
    } 
} 

private string ToSnakeCase(string input) 
{ 
    if (string.IsNullOrEmpty(input)) { return input; } 

    var startUnderscores = Regex.Match(input, @"^_+"); 
    return startUnderscores + Regex.Replace(input, @"([a-z0-9])([A-Z])", "$1_$2").ToLower(); 
} 

-Code von hier angepasst:

https://andrewlock.net/customising-asp-net-core-identity-ef-core-naming-conventions-for-postgresql/