1

Entity Framework 6 코드 먼저, 데이터 주석 또는 Fluent API를 통해 방법을 사용할 수 있으므로 마이그레이션으로 생성 된 데이터베이스에 소문자 열 이름이 있습니다. 내 모델 클래스에는 Pascal Casing 속성이 있습니까?파스칼 사례 속성에서 소문자 열로의 EF 코드 첫 번째 마이그레이션

e.e. 이 클래스 :

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

가 (즉, 마이그레이션이 테이블을 생성한다)이 테이블에 매핑해야합니다

person 
    person 
    firstname 
    surname 

나 같은 경우에도 뭔가 좋은 것 :

person 
    person_id 
    first_name 
    surname 

P.S. 나는

+1

동일한 질문이 있습니다. 대소 문자를 구별하는 PostgreSQL을 사용하고 있으며 소문자의 테이블과 열 이름도 필요합니다. 해결책을 찾았습니까? –

답변

0

내가 여기에서 적응 모든 테이블, 열 및 키 등

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(); 
} 

코드의 이름을 변경하는 OnModelCreating 방법에 몇 가지 코드를 사용했습니다 감사합니다 ... MySQL 데이터베이스 함께 일하고 :

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